讀完本篇文章後,你將學到"開發"、「配置」、"發佈",最終擁有屬於你本身的npm
包。node
經過npm init
命令能夠建立初始項目,須要逐步完善一下信息:git
package name: (npmtest)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
複製代碼
建立完package.json
以後,咱們就能夠轟轟烈烈的寫代碼了。npm
開發中如何調試是一個痛點,不少人會把代碼複製到node_modules
中再調試結果,其實咱們有更好的辦法:"npm link",使用流程以下:json
npm link
npm link package-name
package-name
目前這種方式在yarn
中沒法使用。數組
首先須要在www.npmjs.com/signup註冊帳號。bash
完成以後在終端中執行npm login
,輸入帳號密碼以後即登陸成功。svn
這裏有一點須要注意,若是設置過taobao
源,須要修改成npm
源,使用以下指令還原:post
npm config set registry http://registry.npmjs.org
複製代碼
可是鑑於實際狀況,咱們在taobao
和npm
源之間互相切換其實太麻煩了,比較好的解決方案就是配置package.json
中的publishConfig
字段,配置說明看下一段落。測試
此次主要介紹:ui
發佈使用的配置。
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"tag": "beta",
"access": "public"
}
複製代碼
dist-tag
標籤scoped
包,必定須要設置爲public
(付費帳號除外)包的入口執行文件,一般咱們會指定爲index.js
。
咱們須要控制npm
包的大小,避免安裝過程當中花費太多時間。通常來講咱們只輸出編譯過的內容、文檔、樣式等。
package.json
的files
字段的做用就是控制包含在項目中的內容,它能夠設置爲文件或者文件名組成的數組。
除此以外,咱們還能夠在根目錄或子目錄下建立.npmignore
文件,寫法和gitignore
一致。
有些文件是沒法忽略的:
如下文件是默認忽略的:
版本號遵循語義化版本的規則,由MAJOR.MINOR.PATCH
組成,在末尾還能夠加上擴展的預發佈版本號信息。
版本號能夠手動修改,也能夠經過npm version
命令管理:
// 假設當前版本號 v1.0.0
npm version patch
// v1.0.1
npm version prepatch
// v1.0.2-0
npm version minor
// v1.1.0
npm version major
// v2.0.0
複製代碼
npm version
的完整命令以下:
npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]
複製代碼
若是咱們要生成1.0.0-alpha.1
風格的版本號,能夠帶上參數--preid
:
npm version prerelease --preid=alpha
複製代碼
當咱們執行了npm version
以後,腳本會自動修改版本號,並在git
中建立提交和標籤,若是想要禁用該行爲,能夠傳入--no-git-tag-version
來阻止。
npm
的tag
是用於標記不一樣用途的版本,一個npm
包至少會有latest
標籤,咱們能夠根據測試版、預覽版等不一樣需求定製標籤。
好比咱們有一個測試版本要發佈,咱們能夠指定dist tag
爲beta
:
npm publish --tag beta
複製代碼
當咱們測試完成,準備正式發佈的時候,就能夠把beta
對應版本號演進到latest
上。
當一切準備就緒以後,咱們就能夠進入發包的衝刺了。
npm publish
複製代碼
注意!可能有人說我爲何看到的只有錯誤,通常這個時候能夠這樣排查:
@somescope/somepackagename
形式若是包屬於某個組織下,即@somescope/somepackagename
形式的包名,執行命令須要調整爲npm publish --access public
。
通過千辛萬苦以後,咱們終於發佈成功了,但是若是咱們發現某個文件漏掉了,再發佈一個版本也不太值得,咱們就可使用npm unpublish
命令取消24小時以內發佈的包,須要注意的是unpublish
並不推薦使用。
tag
tag
npm dist-tag rm <pkg> <tag>
複製代碼
本文同步發表於做者博客: 什麼是npm系列:3、如何發佈本身的npm包