1、初始化一個項目 vue create ***
2、將項目中原來的src目錄改為examples
新建packages空文件夾
3、因為沒了src目錄,需要修改vue.config.js(沒有這個文件就新建一個)才能正常運行
直接上代碼

1 const path = require('path'); 2 module.exports = { 3 /* 部署生產環境和開發環境下的URL:可對當前環境進行區分,baseUrl 從 Vue CLI 3.3 起已棄用,要使用publicPath */ 4 // baseUrl: process.env.NODE_ENV === 'production' ? './' : '/', 5 // publicPath: process.env.NODE_ENV === 'production' ? '/public/' : './', 6 publicPath: './', 7 //更改入口和出口文件名 8 pages: { 9 index: { 10 entry: "examples/main.js", 11 template: "public/index.html", 12 filename: "index.html" 13 }, 14 }, 15 // 擴展 webpack 配置,使 packages 加入編譯 16 chainWebpack: config => { 17 config.module 18 .rule('js') 19 .include 20 .add('/packages/') 21 .end() 22 .use('babel') 23 .loader('babel-loader') 24 .tap(options => { 25 // 修改它的選項... 26 return options 27 }) 28 }, 29 /* 輸出文件目錄:在npm run build時,生成文件的目錄名稱 */ 30 outputDir: 'ecmoho-chart', 31 /* 放置生成的靜態資源 (mixin、css、img、fonts) 的 (相對於 outputDir 的) 目錄 */ 32 assetsDir: "assets", 33 /* 是否在構建生產包時生成 sourceMap 文件,false將提高構建速度 */ 34 productionSourceMap: false, 35 /* 默認情況下,生成的靜態資源在它們的文件名中包含了 hash 以便更好的控制緩存,你可以通過將這個選項設為 false 來關閉文件名哈希。(false的時候就是讓原來的文件名不改變) */ 36 filenameHashing: false, 37 /* 代碼保存時進行eslint檢測 */ 38 lintOnSave: false, 39 /* webpack-dev-server 相關配置 */ 40 devServer: { 41 /* 自動打開瀏覽器 */ 42 open: false, 43 /* 設置為0.0.0.0則所有的地址均能訪問 */ 44 host: '0.0.0.0', 45 port: 8080, 46 https: false, 47 hotOnly: false, 48 } 49 };
4、開始在packages中寫自己要封裝的插件
1)packages下新建文件夾chart --chart里面寫自己想要的插件
2)packages下新建index.js文件

1 import chart from "./chart/index"; 2 3 // 存儲組件列表 4 const components = [chart]; 5 // 定義 install 方法,接收 Vue 作為參數。如果使用 use 注冊插件,則所有的組件都將被注冊 6 const install = function(Vue) { 7 // 判斷是否安裝 8 if (install.installed) return; 9 // 遍歷注冊全局組件 10 components.forEach(component => { 11 Vue.component(component.name, component) 12 }); 13 }; 14 // 判斷是否是直接引入文件 15 if (typeof window !== "undefined" && window.Vue) { 16 install(window.Vue); 17 } 18 export default { 19 // 導出的對象必須具有 install,才能被 Vue.use() 方法安裝 20 install, 21 // 以下是具體的組件列表 22 chart 23 };
3)chart文件夾下新建index.js文件

1 import chart from "./src/chart"; 2 3 // 為組件提供 install 安裝方法,供按需引入 4 chart.install = function (Vue) { 5 Vue.component(chart.name, chart) 6 }; 7 // 默認導出組件 8 export default chart
4)packages下面可以建自己需要的文件夾,例如css、js等
完整packages文件夾文件目錄如下
5、開始驗證了
1)examples下main.js中引用
2)app.vue組件中調用
3)npm run serve 可以試運行一下,基本上不會出現什么差錯
6、發布到npm上
1)修改package.json文件,添加一條npm run lib指令在scripts中,修改發布到npm上的各種字段
直接上代碼

1 { 2 "name": "ecmoho-chart", 3 "version": "0.1.1", 4 "private": false, 5 "description": "ecmoho-chart 圖形封裝插件", 6 "main": "lib/ecmoho-chart.umd.min.js", 7 "keyword": "vue echarts ecmoho-chart", 8 "scripts": { 9 "serve": "vue-cli-service serve", 10 "build": "vue-cli-service build", 11 "lib": "vue-cli-service build --target lib --name ecmoho-chart --dest lib packages/index.js" 12 }, 13 "dependencies": { 14 "echarts": "^4.5.0", 15 "vue": "^2.6.10" 16 }, 17 "devDependencies": { 18 "@vue/cli-service": "^4.1.0", 19 "vue-template-compiler": "^2.6.10" 20 }, 21 "browserslist": [ 22 "> 1%", 23 "last 2 versions" 24 ] 25 }
2)添加.npmignore
文件,設置忽略發布文件
代碼代碼

1 # 忽略目錄 2 examples/ 3 packages/ 4 public/ 5 6 # 忽略指定文件 7 vue.config.js 8 babel.config.js 9 *.map
3)登錄npm賬號
如果配置了淘寶鏡像,先設置回npm鏡像:$ npm config set registry http://registry.npmjs.org
npm login 根據提示輸入賬號、密碼、郵箱就可以了,郵箱可以自己先登錄一下
npm run lib 打包
npm publish 發布
4)如果報403錯誤說明郵箱沒有驗證,到npm官網上驗證一下郵箱就行了