国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

從零到一發(fā)布 NPM 包

這篇具有很好參考價值的文章主要介紹了從零到一發(fā)布 NPM 包。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

如果你負(fù)責(zé)前端的基礎(chǔ)能力建設(shè),發(fā)布各種功能/插件包猶如家常便飯,所以熟悉對 npm 包的發(fā)布與管理是非常有必要的,故此有了本篇總結(jié)文章。本篇文章一方面總結(jié),一方面向社區(qū)貢獻(xiàn)開箱即用的 npm 開發(fā)、編譯、發(fā)布、調(diào)試模板,希望幫助到有需要的同學(xué)。

辛苦整理良久,還望手動點贊鼓勵~
npm sdk 模板倉庫為:https://github.com/fengshi123/npm-sdk
博客 github地址為:https://github.com/fengshi123/blog ,匯總了作者的所有博客,歡迎關(guān)注及 star ~

一、初始化 npm 包

1.1、初始化 npm 項目

根據(jù)以下命令能初始化一個 npm 包項目,命令交互過程中會讓你填入 項目名稱、版本、作者等信息,可以直接回車跳過(使用默認(rèn)設(shè)置)

npm init --save

1.2、包權(quán)限管理

很多時候,一個項目包往往不只是你一個人在管理的,這時需要給其他一起維護(hù)的同學(xué)開通發(fā)布的權(quán)限,相關(guān)使用命令如下:

# 查看模塊 owner, 其中 demo 為模塊名稱
$ npm owner ls demo

# 添加一個發(fā)布者, 其中 xxx 為要添加同學(xué)的 npm 賬號
$ npm owner add xxx demo

# 刪除一個發(fā)布者
$ npm owner rm xxx demo

1.3、發(fā)布版本

1.3.1、發(fā)布穩(wěn)定版本

更新版本號共有以下選項(major | minor | patch | premajor | preminor | prepatch | prerelease) ,注意項目的git status 必須是clear,才能使用這些命令。

# major 主版本號,并且不向下兼容  1.0.0 -> 2.0.0
$ npm version major

# minor 次版本號,有新功能且向下兼容  1.0.0 -> 1.1.0
$ npm version minor

# patch 修訂號,修復(fù)一些問題、優(yōu)化等  1.0.0 -> 1.0.1
$ npm version patch

# premajor 預(yù)備主版本  1.0.0 -> 2.0.0-0
$ npm version premajor

# preminor 預(yù)備次版本  1.0.0 -> 1.1.0-0
$ npm version major

# prepatch 預(yù)備修訂號版本  1.0.0 -> 1.0.1-0
$ npm version major

# prerelease 預(yù)發(fā)布版本  1.0.0 -> 1.0.0-0
$ npm version major

版本號更新后,我們就可以進(jìn)行版本的發(fā)布

$ npm publish
1.3.2、預(yù)發(fā)布版本

很多時候一些新改動,并不能直接發(fā)布到穩(wěn)定版本上(穩(wěn)定版本的意思就是使用 npm install demo 即可下載的最新版本),這時可以發(fā)布一個 “預(yù)發(fā)布版本“,不會影響到穩(wěn)定版本。

# 發(fā)布一個 prelease 版本,tag=beta
$ npm version prerelease
$ npm publish --tag beta

比如原來的版本號是?1.0.1,那么以上發(fā)布后的版本是?1.0.1-0,用戶可以通過?npm install demo@beta? 或者?npm install demo@1.0.1-0? 來安裝,用戶通過 npm install demo 安裝的還是 1.0.1 版本。

1.3.3、將 beta 版本設(shè)置為穩(wěn)定版本
# 首先可以查看當(dāng)前所有的最新版本,包括 prerelease 與穩(wěn)定版本
$ npm dist-tag ls

# 設(shè)置 1.0.1-1 版本為穩(wěn)定版本
$ npm dist-tag add demo@1.0.1-1 latest

這時候,latest 穩(wěn)定版本已經(jīng)是?1.0.1-1?了,用戶可以直接通過?npm install demo?即可安裝該版本。

1.3.4、將 beta 版本移除
# 將 beta 版本移除
$ npm dist-tag rm demo beta
1.3.5、將 tag 推送到 Git 遠(yuǎn)程倉庫中
# 當(dāng)我們發(fā)布完對應(yīng)的版本,可以通過以下命令將版本號推送到遠(yuǎn)程倉庫, 其中 xxx 為對應(yīng)分支
$ git push origin xxx --tags

1.4、查看版本信息

可以通過?npm info?來查看模塊的詳細(xì)信息。

$ npm info

二、使用 typescript

2.1、安裝 typescript 作為開發(fā)階段的依賴項

$ npm i typescript -D

2.2、增加配置文件 tsconfig.json

在根目錄新建 tsconfig.json,配置項具體的意義可以參考 ts 官方文檔

{
    "version": "1.8.0",
    "compilerOptions": {
        "outDir": "build/compiled",
        "lib": [ "es6" ],
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "sourceMap": true,
        "noImplicitAny": true,
        "declaration": true
    },
    "exclude": [ "build", "node_modules" ]
}

2.3、安裝 @types/node

安裝 @types/node 讓 node 的核心包具備類型提示

$ npm i @types/node -D

2.4、新建入口文件

在根目錄新建 src 目錄,用于存放所有的 TypeScript 源文件,然后在 src 下新建 index.ts 作為入口文件

// src/index.ts

console.log('hello npm-sdk!');

2.5、安裝 ts-node-dev

在開發(fā)階段為了能直接執(zhí)行并且監(jiān)聽 ts 文件的變化,安裝 ts-node-dev

$ npm i ts-node-dev -D

在 package.json 中定義一個啟動腳本

"scripts": {
    "start": "ts-node-dev --respawn --transpile-only src/index.ts"
}

這樣我們就可以實時進(jìn)行編譯,如下所示
從零到一發(fā)布 NPM 包
?

三、使用 eslint 校驗

3.1、安裝 eslint

$ npm i eslint -D

3.2、eslint 初始化

$ ./node_modules/.bin/eslint --init

根據(jù)交互命令提示對應(yīng)生成配置文件如下所示,可以根據(jù)團(tuán)隊的代碼風(fēng)格進(jìn)行對應(yīng)的配置 .eslintrc.js

module.exports = {
  env: {
    browser: true,
    es2021: true
  },
  extends: [
    'standard'
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 13,
    sourceType: 'module'
  },
  plugins: [
    '@typescript-eslint'
  ],
  rules: {
  }
}

3.3、添加忽略文件 .eslintignore

node_modules/

3.4、script 命令配置

可以通過在 package.json 中配置對應(yīng)的校驗命令和修復(fù)命令,如下所示

  "scripts": {
    "lint": "eslint --ext .ts .",
    "lint:fix":"eslint --fix --ext .ts ."
  },

3.5、提交校驗

利用 commitlint 和 husky 工具進(jìn)行代碼提交時攔截驗證,安裝如下

$ npm i @commitlint/cli @commitlint/config-conventional husky lint-staged --D

在 package.json 中進(jìn)行對應(yīng)的配置,當(dāng) commit 代碼時,如果代碼中存在 eslint 錯誤,那么就會進(jìn)行報錯提示

  "husky":{
    "hooks":{
      "pre-commit":"lint-staged",
      "commit-msg":"commitlint -e $HUSKY_GIT_PARAMS"
    },
    "lint-staged":{
      ".ts":[
        "eslint --fix"
      ]
    },
    "commitlint":{
      "extends":[
        "@commitlint/config-conventional"
      ]
    }
  },

四、編譯

我們可以增加對應(yīng)的 typescript 編譯命令,如下所示

"scripts": {
  "build:cjs": "tsc --outDir lib",
  "build:es": "tsc -m esNext --outDir esm",
  "build": "rd /s /q lib esm && npm run build:cjs && npm run build:es",
},

配置對應(yīng)的入口地址,其中 module 和 main 的區(qū)別是,module 主要在 tree shaking 時會用到。

  "main": "lib/index.js",
  "module": "esm/index.js",

五、本地調(diào)試

可以通過 npm link 在正式項目中進(jìn)行調(diào)試,在我們的包目錄中安裝完發(fā)布的線上包后,可以執(zhí)行以下命令將當(dāng)前項目 node_modules 底下安裝的對應(yīng)包關(guān)聯(lián)到本地全局 npm 目錄的 node_modules 目錄下,命令如下

$ npm link npm-sdk@1.0.1-0

執(zhí)行命令如下所示
從零到一發(fā)布 NPM 包
然后在對應(yīng)的 npm sdk 目錄下進(jìn)行關(guān)聯(lián)

$ npm link

// 關(guān)聯(lián)成功后如下所示
D:\nvm\npm\node_modules\npm-sdk -> F:\all_project\npm-sdk

到這里,通過以上兩個步驟的關(guān)聯(lián),將項目中使用到的 sdk 包,關(guān)聯(lián)到該 sdk 包對應(yīng)的開發(fā)目錄,我們就可以在本地對 sdk 包進(jìn)行調(diào)試。

六、總結(jié)

本文從 npm 各種常用命令、到 sdk 中使用 typescript、以及使用 eslint 強(qiáng)校驗、再到編譯/本地調(diào)試,從零到一演示如何搭建發(fā)布一個 NPM 包,NPM SDK 模板倉庫為:https://github.com/fengshi123/npm-sdk,有需要的同學(xué)可以直接 clone 進(jìn)行使用。
博客 github地址為:https://github.com/fengshi123/blog ,匯總了作者的所有博客,歡迎關(guān)注及 star ~

?文章來源地址http://www.zghlxwxcb.cn/news/detail-401845.html

?

?

?

?

到了這里,關(guān)于從零到一發(fā)布 NPM 包的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • AIGC - Stable Diffusion 搭建【從零到一】

    解決音頻內(nèi)容GPU運算時遇到ffmpeg引起問題 write_py audio_spleeter.txt

    2024年02月09日
    瀏覽(41)
  • 如何制作流程圖?教你從零到一制作

    如何制作流程圖?教你從零到一制作

    如何 制作流程圖 ? 在當(dāng)今快節(jié)奏、信息化的社會,流程圖已經(jīng)成為了一種非常重要的溝通工具。它能夠幫助我們清晰地表達(dá)復(fù)雜的過程、系統(tǒng)和思路。那么,如何從零開始制作流程圖呢?本文將為你提供一份詳細(xì)的指南。 一、明確目的和內(nèi)容 在開始制作流程圖之前,首先

    2024年01月24日
    瀏覽(96)
  • zookeeper單節(jié)點部署,手把手從零到一

    zookeeper單節(jié)點部署,手把手從零到一

    kafka戳這里:kafka單節(jié)點部署,手把手從零到一 事前準(zhǔn)備: 1、一臺Linux服務(wù)器或者是一臺虛擬機(jī) 2、準(zhǔn)備好JDK環(huán)境 3、安裝好wget(當(dāng)然也可以不用這個,只是用于下載安裝包的一個工具,所以能下載好包就是沒問題的) 4、需要了解vim的一些基礎(chǔ)操作,不懂得可自行百度 1.1、

    2023年04月15日
    瀏覽(20)
  • 長安鏈---從零到一部署Chainmaker-2.0.0

    長安鏈---從零到一部署Chainmaker-2.0.0

    長安鏈部署 長安鏈·ChainMaker具備自主可控、靈活裝配、軟硬一體、開源開放的突出特點,由北京微芯研究院、清華大學(xué)、北京航空航天大學(xué)、騰訊、百度和京東等知名高校、企業(yè)共同研發(fā)。取名“長安鏈”,喻意“長治久安、再創(chuàng)輝煌、鏈接世界”。 長安鏈作為區(qū)塊鏈開源

    2023年04月08日
    瀏覽(25)
  • 開發(fā)一個Android應(yīng)用:從零到一的實踐指南

    在這篇博文中,我們將逐步探討如何從頭開始構(gòu)建一個Android應(yīng)用。我們將從最基本的環(huán)境搭建開始,然后深入討論組件、布局和其他核心概念。在完成整個過程后,你將會掌握一個簡單但完整的Android應(yīng)用開發(fā)流程。讓我們開始吧! 準(zhǔn)備開發(fā)環(huán)境 創(chuàng)建項目 理解項目結(jié)構(gòu) 設(shè)計

    2024年02月08日
    瀏覽(57)
  • 【30天python從零到一】---第七天:列表和元組

    【30天python從零到一】---第七天:列表和元組

    ?? 博客主頁:??@披星戴月的賈維斯 ?? 歡迎關(guān)注:??點贊??收藏??留言 ??系列專欄:?? Python專欄 ??請不要相信勝利就像山坡上的蒲公英一樣唾手可得,但是請相信,世界上總有一些美好值得我們?nèi)σ愿?,哪怕粉身碎骨?? ??一起加油,去追尋、去成為更好的自己

    2023年04月19日
    瀏覽(26)
  • Vue+Electron打包桌面應(yīng)用(從零到一完整教程)

    切記,整個項目的json文件不能有注釋,及時沒報錯也不行,否則運行命令時還是有問題 參考此視頻 1- 1.創(chuàng)建項目 1- 2. 安裝依賴運行項目 1- 3.配置Electron 1- 4.修改配置文件 1) vite.config.js 2)main.js(項目根目錄新增) 此為electron運行的入口文件 3)preload.js(項目根目錄下新增) 4)package

    2024年02月07日
    瀏覽(36)
  • 入職從零到一:如何快速學(xué)習(xí)Git以適應(yīng)工作環(huán)境

    本文并非面向完全的 Git 初學(xué)者,也不會詳細(xì)介紹每一個 Git 命令和它的所有選項。相反,本文的目標(biāo)讀者是那些已經(jīng)有一些基礎(chǔ),至少知道如何在本地倉庫進(jìn)行基本的版本控制操作,包括 git add , git commit 和 git log ,但是還沒有在企業(yè)環(huán)境中真正使用 Git 進(jìn)行過項目開發(fā)的開

    2024年02月11日
    瀏覽(39)
  • 從零到一的方法:學(xué)習(xí)視頻剪輯與嵌套合并技巧

    從零到一的方法:學(xué)習(xí)視頻剪輯與嵌套合并技巧

    隨著社交媒體和數(shù)字技術(shù)的快速發(fā)展,視頻制作已是常見的工作。那么如何批量嵌套合并視頻呢?下面一起來看云炫AI智剪如何批量合并的方法。 嵌套合并后的視頻截圖查看。 批量嵌套合并的操作: 操作1、在云炫AI智剪上選擇“嵌套合并”功能,切換相應(yīng)的版塊。 操作2、把

    2024年02月02日
    瀏覽(24)
  • 純編程從零到一創(chuàng)建圖書管理系統(tǒng)V1.0

    純編程從零到一創(chuàng)建圖書管理系統(tǒng)V1.0

    上一篇文章 答應(yīng)了道友們通過ChatGpt制作圖書管理系統(tǒng)程序,今天第一版LMS(Library Management System)他來了,完整版代碼放在在文末,有基礎(chǔ)的道友可以 點此跳轉(zhuǎn),在安裝中遇到問題,可以點擊此處查看解決方案 效果圖 功能列表 1、搜索圖書只顯示符合條件的圖書所在行 2、添加

    2024年01月17日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包