在项目中遇到需要反复使用的代码时,通常会将其封装起来以待下一次的调用。若想要在不同项目里也能使用这些代码时,比较难在众多代码中找到需要的代码。而将组件打包并发布到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
21import 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
2cd el-editor
npm init -y将npm源设为官方源:
1
npm config set registry=https://registry.npmjs.org
输入以下命令添加npm用户,若之前添加过可以跳过该步骤
1
2npm adduser
//这里会让填写用户名和密码输入以下命令发布组件包
1
npm publish
如果发布失败可能是名字重复了,改名后重新发布即可。
注意事项
删除npm上的包,需要隔天才能重新用同样的名字发布
发布包后要注意组件中静态资源
public
、assets
、public
的路径是否正确更新包版本时,可以直接更改版本号,也通过以下命令,将1.0.0版本改为1.0.1版本:
1
npm version patch -m '[patch]'