1.上传前提
先到npm中文网 官网 (p2hp.com)官网上面注册一个账号,如果有账号了忽略这步
2.准备封装组件
准备上传组件前有两种方式,可以在当前项目中进行打包上传,需要单独创建一个文件夹来放置封装的组件;还可以创建一个新的项目,然后把自己的组件复制过来,单独配置打包内容,不影响原组件在项目中的使用。(这里建议新创建一个Vue项目)
创建好的项目文件(bebel和eslint),将原本src路径下的components和其他无用的删掉,新建一个package文件夹,这是存放组件打包的文件夹,在package文件夹下面创建index.js作为对外导出配置文件。
注意,封装的组件一定要有name属性,而且不要和市面上组件的命名冲突。
上面package文件下的assets是放置静态资源的,components是放打包的组件。
3.配置项目文件
首先将package.json文件进行修改,只有"private": false修改就行,其他修改是为了打包以后的查看,可以根据需要来修改。
"name": "drawing-box", //包名称 "version": "1.0.0", //包版本 "description": "Fabric.js二次封装", //包简短描述 "private": false, //一定设置为false,为true表示拒绝上传到npm包管理平台 "main": "babel.config.js", //文件入口文件 "author": "yuansusu", //作者名 "keywords": [ //包关键字 "Fabricjs", "canvas" ], "license": "ISC"
组件的样式在打包后可能会不生效,需要引入包的时候额外引入css样式,对于组件样式比较少的情况,可以直接在vue.config.js中配置js和css不分离打包,将extract设置为false即可。
module.exports = { lintOnSave: false, //样式与js不分开 css: { extract: false } }
书写index.js的内容,首先在文件中导入组件,并给组件或Vue添加install方法,这个方法会在组件在外部导入的时候使用Vue.use来触发。
//导入使用的包 import ElementUI from 'element-ui' //导入向外共享的组件或方法 import Drawing from './components/Drawing.vue'; // 1.将多个对象放入数组(多个组件使用数组,然后循环添加方法) // const components = [Drawing] // const install = (Vue) => { // Vue.use(ElementUI); // components.forEach(component => { // Vue.component(component.name, component); // }) // } // 2.给组件定义install方法 // Drawing.install = Vue => { // Vue.use(ElementUI); // Vue.component(Drawing.name, Drawing) // } // 直接导出组件 //export default Drawing //3.定义方法,导出对象 const install = (Vue) => { Vue.use(ElementUI); Vue.component(Drawing.name, Drawing) } //对外导出组件(导出对象形式) export default { install, Drawing }
上面有三种导出的方法,前两个分别适用多组件导出和单个组件导出,我这里使用的是单个组件导出的方式。
4.设置打包命令
前面的准备好以后,需要在package.json中的script节点下添加一个命令:
"lib": "vue-cli-service build --target lib ./src/package/index.js --name drawing-box --dest drawing-box"
前面的lib可以根据自己喜好进行命名,后面的命令为:
- –target lib 路径 => 指定打包的目录
- –name 名称 => 打包后的文件名字
- –dest 名称 => 打包后的文件夹的名称
执行命令:
npm run lib
打包完成后的信息,并在根路径下生成了一个打包文件
5.初始化上传包信息和README.md文件
首先进入打包的文件路径下,进行npm初始化
cd .\drawing-box\
npm init -y
上面生成的package.json文件的内容修改一下,可以参照项目根路径下的package.json的内容填写。注意的是,每次发布包版本的version的值不能相同,并且建议以1.0.0为开始。
创建一个README.md文件,在上传npm包后,会将里面的内容展示并介绍如何使用npm包。下载VsCode插件Markdown All in One,可以进行实时预览md文档内容,安装后点击右上角打开。
6.发布包
终于到了发布包的时候了,首先要确保自己的npm地址源是npm官方,
npm config get registry
显示https://registry.npmjs.org/就可以进行登录,如果不是则切换npm地址
npm config set registry https://registry.npmjs.org/
登录npm账号
npm login
等待一会,出现username:,输入自己的账号,密码,然后新的设备登录会有一个邮箱验证码,输入邮箱验证码即可。
注意,发布的包名称必须时npm库中没有的,不知道有没有可以去npm官网上查看,没有话就可以进行发布了,注意要在打包的路径下发布包。
发布包,当发布成功后,会显示当前上传的包名称@版本信息,可以去npm官网搜索自己发布的包
npm publish
进入npm查找刚刚发布的包,一般会有邮箱提示。
结语
大家对Canvas感兴趣可以下载包看看,这是一个绘画板组件,目前功能比较少,后续会不断完善,如果上面步骤有什么问题可以在评论留言。