簡易npm包的開發(fā)流程

npm 設(shè)置

在開發(fā)一個Npm包的時候,最開始肯定是要初始化好環(huán)境:

npm set init.author.name "scq000"
npm set init.author.email "scq000@hotmail.com"
              
npm set init.author.url "https://scq000.github.io"
              
npm set init.license 'MIT'
              
cat ~/.npmrc

設(shè)置好基礎(chǔ)的配置后,后續(xù)在開發(fā)新的項目的時候,會自動在package.json中帶上預(yù)先定義的配置信息。

生成changelog

對于對外使用的npm包來說,版本更新記錄是十分重要的,可以考慮使用commitzen 在每次提交代碼的時候,遵循規(guī)范。

cz-conventional-changelog 是和commitizen配套使用的規(guī)則集,通常來說項目里直接使用默認(rèn)配置即可:

  "config": {
    "commitizen": {
      "path": "cz-conventional-changelog"
    }
  },

另外,git-cz是將commitizen和git相結(jié)合的工具,根據(jù)官方文檔配置后,可以直接在命令行中執(zhí)行:

npx git-cz

就能實現(xiàn)在代碼提交的時候,提供交互式的命令行來填寫規(guī)范化的commit信息。

[圖片上傳失敗...(image-825803-1650939725828)]

githook配置

githook的配置,可以限制在每次代碼提交過程中,執(zhí)行一些前置的代碼檢測、單元測試等工作。

執(zhí)行如下命令:

npm install -D ghooks

然后,在項目的package.json配置文件里,配置一下鉤子:

          config: {
            ghooks: {
              "pre-commit": "npm run test:single"
            }
          }

這樣一來,在每次執(zhí)行g(shù)it commit命令之前都會執(zhí)行我們預(yù)定義的腳本。

發(fā)布自動化

自動化在包的研發(fā)過程中是必不可少的,目前業(yè)界已經(jīng)有較多成熟的方案。

semantic

semantic-release提供了在git上實現(xiàn)自動化發(fā)布的整套解決方案,可以在項目中使用如下命令行初始化:

npx semantic-release-cli setup

隨后,根據(jù)提示進(jìn)行輸入項目信息即可

[圖片上傳失敗...(image-5f64d-1650939725829)]

自動化測試

覆蓋率及報告

對于前端代碼的自動化測試,可以借助istanbul.js來實現(xiàn)覆蓋率的統(tǒng)計:

在項目腳本中配置如下命令:

{
  "script": {
     "test": "nyc --reporter=html --reporter=text mocha",
     "coverage": "nyc report --reporter=text-lcov | coveralls"
  }
}

最終能夠生成項目整體的測試統(tǒng)計報告信息。

生成github標(biāo)志

https://shields.io是用來生成項目狀態(tài)圖標(biāo)的工具,在READEME.md文件的開頭貼上根據(jù)項目生成的圖標(biāo),就能直接根據(jù)圖標(biāo)狀態(tài)來觀測項目構(gòu)建的狀態(tài)。

[![Npm Package Demo](https://img.shields.io/badge/npm%20package%20demo-publish-green)](https://scq000.github.io/xxx)[![Npm Package Demo](https://img.shields.io/badge/npm-package-demo-published-blue.svg)

[圖片上傳失敗...(image-84a033-1650939725829)]

總結(jié)

本篇文章提供的這些流程,可以根據(jù)自身需求集成到腳手架上,從而可以在日常維護(hù)開源項目等場景中,能夠高效開發(fā)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容