唐抉的个人博客

Vue 将组件打包并发布到npm仓库

字数统计: 746阅读时长: 2 min
2023/11/20

在项目中遇到需要反复使用的代码时,通常会将其封装起来以待下一次的调用。若想要在不同项目里也能使用这些代码时,比较难在众多代码中找到需要的代码。而将组件打包并发布到npm库中,只需要记住相应的包名,便可从npm下载直接安装使用。

全局注册组件

  • 在完成对应组件editor.vue的封装后,在组件存放目录下(这里默认为components)新建一个index.js文件用于将封装好的组件注册为全局组件,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import editor from './editor.vue'
    const components = [
    editor
    ]
    // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
    const install = function (Vue) {
    // 遍历注册全局组件
    components.forEach(component => {
    Vue.component(component.name, component)
    })

    // 判断是否是直接引入文件,如果是,就不用调用 Vue.use()
    if (typeof window !== 'undefined' && window.Vue) {
    install(window.Vue)
    }
    }

    // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
    export default {
    install
    }

    index.js文件存放位置如图所示:

打包组件

  • 修改项目中的package.json文件scripts属性中的内容,增加一条package属性,配置打包命令:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "package": "vue-cli-service build --target lib ./src/components/index.js --name 组件名称 --dest 组件名称"
    },
    // package参数详情
    // 设置--target lib 参数来指定打包的目录
    // 设置--name 参数来指定打包后的文件名字
    // 设置--dest 参数来指定打包后的文件夹名称

  • 在终端命令行的项目目录处(如F:\el-editor>)执行命令来打包组件:

    1
    npm run package

​ 打包完成后可以看到新生成的文件夹(这里为el-editor

发布到npm

  • npm官网上注册一个账号,记下用户名和密码,若已经有账号可以跳过该步骤

  • 终端进入打包后的文件夹(el-editor),执行以下命令来初始化一个package.json文件:

    1
    2
    cd el-editor
    npm init -y

  • 将npm源设为官方源:

    1
    npm config set registry=https://registry.npmjs.org

  • 输入以下命令添加npm用户,若之前添加过可以跳过该步骤

    1
    2
    npm adduser
    //这里会让填写用户名和密码

  • 输入以下命令发布组件包

    1
    npm publish

    如果发布失败可能是名字重复了,改名后重新发布即可。

注意事项

  • 删除npm上的包,需要隔天才能重新用同样的名字发布

  • 发布包后要注意组件中静态资源publicassetspublic的路径是否正确

  • 更新包版本时,可以直接更改版本号,也通过以下命令,将1.0.0版本改为1.0.1版本:

    1
    npm version patch -m '[patch]'

CATALOG
  1. 1. 全局注册组件
  2. 2. 打包组件
  3. 3. 发布到npm
  4. 4. 注意事项