最近專案需要無狀態的純元件,所以我們把元件封裝了一下,再製作成了外掛,直接引用,把製作外掛心得總結寫了下來分享出來,讓大家可以從零開始製作自己的外掛。
製作外掛
-
安裝node及npm,之後新建一個資料夾,在終端中開啟,執行命令npm init,一路回車然後輸入yes即可,生成一個package.json,
{ "name": "swTest", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
,其中name就是外掛的名稱,預設是資料夾名字;version為版本號,注意每次釋出新版本的時候需要手動更新版本號;description是描述;main是入口檔案,載入這個外掛時讀的檔案,這個也是最重要的屬性,這個屬性是別人引用你的外掛時,讀取的入口檔案,在這個檔案裡,需要你向外暴露介面;author是作者,可以是npm註冊的名字。 -
在根目錄下新建src資料夾,裡面存放的就是自己的程式碼片段。
-
在根目錄下新建個 .npmignore(注意要有個.),裡面就是npm在釋出時會忽略專案中的檔案。
-
在根目錄下新建README.md,裡面是釋出到npm時專案介紹。
babel轉義
因為很多語法都是ES6及以上,所以需要轉義成ES5。
- 全域性安裝Babel:
npm install -g babel-cli
- ES6轉碼規則:
npm install babel-preset-es2015 --save-dev
- react轉碼規則:
npm install babel-preset-react --save-dev
- ES7不同階段語法提案的轉碼規則:
npm install babel-preset-stage-0 --save-dev
(0 - 3都可以) - 根目錄下新建.babelrc(同樣有.);加入規則
{ "presets": [ "es2015", "react", "stage-2" ], "plugins": [] }
- 一般我們是將程式碼寫在src裡面,然後將整個src轉義成es5,根目錄下執行程式碼
babel src --out-dir lib
,得到lib資料夾,就是src轉義之後的檔案了。 - 修改package.json,裡面main修改為
lib/index
- 修改.npmignore檔案,增加
src/ node_modules/ package-lock.json
️釋出外掛
- 沒有npm賬號的先去npm官網註冊,官方網站是:
https://www.npmjs.com/
; - 先修改package.json中的name,修改成你的外掛名,然後在npm官網查詢是否已經被註冊了這個名字,有的話修改一下;
- 專案根目錄下執行
npm adduser
,輸入npm的賬號密碼還有郵箱,缺一不可; - 可以執行
npm whoami
檢視當前使用者是否是自己; - 執行程式碼
npm publish
進行釋出; - 可以在npm官網右上角點選packages檢視自己釋出的,有的話釋出就成功啦;
- 在專案之中可以引進自己的外掛
npm install xxx --save-dev
進行使用啦;
️維護外掛
- 對外掛程式碼功能進行了擴充或者修改,需要重新發布新版本,除了改程式碼之外,需要每次手動把package.json中的version進行修改,這是版本號,代表版本改動了。npm使用的版本號規則是semver語義化版本,初始化是1.0.0,依次是主版號.次版號.修訂號,主版號是不相容的API修改,次版號是功能性新增,修訂號是問題修正。
- 修改了之後再執行一次
npm publish
進行釋出; - 釋出之後在運用的專案如何更新呢?(1)如果是npm,由於是自己的外掛,可以知道自己的版本修改成了什麼,在專案中package.json裡面找到依賴包版本,手動改成最新的版本號,然後專案執行
npm install --force
就可以了;(2)如果是yarn,執行yarn upgrade
也ok;(3)由於專案中的依賴包會發生更新,所以有時候我們會安裝第三方外掛進行檢視,npm install -g npm-check-updates
,執行ncu
檢視可更新包,ncu -u
更新package.json,npm install
升級到最新版本即可。
再來點乾貨,安裝外掛時,--save-dev是你開發時候依賴的東西,--save是你釋出之後依賴的東西。-g表示全域性安裝,--save-dev 可以簡寫為 -D ,--save 可以簡寫為 -S ,npm install 可以簡寫為 npm i。
程式碼已經傳上github,github地址,歡迎大家訪問 (地址:https://github.com/Songwei1029/create-plug
),有問題歡迎留言。