從零發佈TypeScript npm工具包

前言

編程工做中,常常會封裝一些經常使用的代碼片斷,好比如何獲取時間,格式化時間等。git

不一樣的團隊,不一樣的業務就會有多個相互獨立的項目。github

咱們能夠將公用的一些工具庫函數封裝成npm包的形式,可讓我的或者團隊這些import包就能夠直接使用。typescript

1.註冊NPM帳號

先去官網註冊一個帳號,填寫好帳號、密碼、郵箱npm

https://www.npmjs.com/編程

2.初始化項目

建立util-snippets文件夾

mkdir util-snippets

初始化package.json

npm init

填寫好npm包的信息,做者信息,版本信息,並在package.json中的字段指定入口文件是./build/index.jsjson

"main": "./build/index.js",

安裝包

安裝包文件,在 package.json中配置scripts執行腳本編譯運行,測試,格式化代碼等。
具體配置可在package.json中查看。安全

在根目錄中添加tsconfig.json還有tslint.json文件函數

安裝項目須要用到的包:
npm install typescript tslib ts-jest @types/jest --save
安裝團隊合做須要用的包,好比統一代碼風格,每次git commit都會統一格式化和美化代碼:
npm install husky lint-staged tslint-config-prettier --save
  • package.json中添加scripts,在build以前先自動跑測試用例,確保代碼運行的質量。工具

    "scripts": {
       "dev": "npm run tsc:w", // 監聽文件修改並實時編譯
       "build": "npm run test && npm run lint && tsc", // 運行測試,優化代碼和編譯
       "lint": "prettier --write --parser typescript 'src/**/*.ts' // 格式化同時代嗎 'test/**/*.ts'",
       "test:w": "jest --watchAll", // 監聽測試文件修改並實時編譯,用戶本地開發
       "test": "jest" // 運行測試用例
     },

配置Jest單元測試

單元測試能夠及時發現代碼的問題,讓你發佈的npm包更安全更嚴謹。單元測試

  • 配置 jest.config.js
  • 編寫單元測試用例 // 在test文件夾中 xxx.test.ts
  • 執行 npm run test

3.npm本地調試

開發好的包須要調試才能夠放心的讓本身和其餘人使用,之前的調試是經過不一樣指定發佈不一樣的tag,頻繁發佈到線上,再從新安裝依賴,這樣會影響到用戶,效率也低下。

如今將本地開發的npm包link到本地,而後經過另一個項目import進去,就能夠實現先在本地調試,調試成功,再發布到npm的官網上。樣就能夠直接模擬正常使用包的狀況。

util-snippets目錄下執行

npm link // 至關於npm install util-snippets

在其餘須要測試util-snippets目錄下直接import進去就能夠使用了

import { allEqual } from 'utl-snippets'

發佈到npm包到線上

1.在命令行登陸

npm login

2.發佈

npm publish

發佈成功就直接能夠import使用了

在線測試

https://codesandbox.io/s/serene-wilbur-6uy5q

其餘

  • 發佈tag包

每次publish都會是@lastet版本,用戶安裝的也是lastet,咱們能夠指定tag別名來發布

npm publisb --tag tabName(alpha)
  • 修改版本

每次修改都會手動修改package.json裏面的version才能發佈,能夠指定如下命令來規範版本號

npm version patch  // 小變更,好比修復bug等,版本號變更 v1.0.0->v1.0.1
    npm publish // 增長新功能,不影響現有功能,版本號變更 v1.0.0->v1.1.0
    npm version // 破壞模塊對向後的兼容性,版本號變更 v1.0.0->v2.0.0

倉庫地址:https://github.com/czero1995/util-snippets

倉庫地址:https://www.npmjs.com/package/util-snippets

啓動項目

git clone https://github.com/czero1995/util-snippets.git
cd util-snippets
npm i
npm run build

引用util-snippets

import { allEqual } from 'util-snippets'
相關文章
相關標籤/搜索