2020-9-8 seo達(dá)人
構(gòu)建庫的常見方法有兩種:一種是自己手動構(gòu)建webpack庫打包,設(shè)置output為 library; 另一種是基于vue-cli3輸出庫資源包。我們采用第二種vue腳手架的方式構(gòu)建庫。
新增編譯庫命令
// package.json
"scripts": {
// ...
"lib": "vue-cli-service build --target lib --name Step --dest dist packages/index.js"
}
// packages/index.js 默認(rèn)打包Step
import Step from '../steps/src/step';
Step.install = function(Vue) {
Vue.component(Step.name, Step);
};
export default Step;
--name: 庫名稱。
--target: 構(gòu)建目標(biāo),默認(rèn)為應(yīng)用模式。這里修改為 lib 啟用庫模式。
--dest: 輸出目錄,默認(rèn) dist。
[entry]: 最后一個參數(shù)為入口文件,默認(rèn)為 src/App.vue。
更多詳細(xì)配置查看 ? vue腳手架官網(wǎng)
如果該庫依賴于其他庫,請在vue.config.js 配置 externals
// vue.config.js
module.exports = {
configureWebpack:{
externals: {
vue: 'Vue',
'vue-router':'VueRouter',
axios: 'axios'
}
}
}
執(zhí)行 npm run lib 就可以發(fā)現(xiàn)我們的庫被打包到了 根目錄的dist文件夾下。
添加 .npmignore 文件(可選)
和 .gitignore 的語法一樣,具體需要提交什么文件,看各自的實際情況
# 忽略目錄
examples/
packages/
public/
# 忽略指定文件
vue.config.js
babel.config.js
*.map
配置npm庫信息
配置package.json文件,以發(fā)布庫文件。
{
"name": "gis",
"version": "1.2.5",
"description": "基于 Vue 的庫文件",
"main": "dist/gis.umd.min.js",
"keyword": "vue gis",
"private": false,
"files": ["dist"],
"license": "MIT"
}
name: 包名,該名字是唯一的。可在 npm 官網(wǎng)搜索名字,如果存在則需換個名字。
version: 版本號,每次發(fā)布至 npm 需要修改版本號,不能和歷史版本號相同。
description: 描述。
main: 入口文件,該字段需指向我們最終編譯后的包文件。
keyword:關(guān)鍵字,以空格分離希望用戶最終搜索的詞。
author:作者
files: 要上傳的文件
private:是否私有,需要修改為 false 才能發(fā)布到 npm
license: 開源協(xié)議
dependencies: 依賴庫
注意每次發(fā)布新的庫,需要更改版本號,規(guī)則如下:
"version": "1.2.5" 主版本號為 1,次版本號 2,修訂號 5
主版本號(Major):當(dāng)你做了不兼容的API修改
次版本號(Minor):當(dāng)你做了向下兼容的功能性新增
修訂號(Patch):當(dāng)你做了向下兼容的問題修正
登錄npm
首先設(shè)置登錄的npm鏡像地址
npm config set registry http://168.20.20.57.4873
然后在終端執(zhí)行登錄命令,輸入用戶名、密碼、郵箱即可登錄
npm login
接著發(fā)布庫資源到npm
npm publish
最后發(fā)布成功可到官網(wǎng)查看對應(yīng)的包并下載
npm install package_name
藍(lán)藍(lán)設(shè)計( ssll180.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標(biāo)定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)藍(lán)藍(lán)設(shè)計的小編 http://ssll180.com