在開始以前,先去註冊一個NPM帳號,若是沒有的話html
建項目文件夾
先建一個工程文件夾或者拉取遠程git上的已有項目node
mkdir my-test-project
複製代碼
初始化git
進入該文件夾,先初始化git(若是尚未的話),用於版本控制。在github(也能夠其餘)上新建一個與項目同名的遠程倉庫,並添加README.md
文件,拷貝倉庫地址,如:git
// 拷貝github上的倉庫地址
git@github.com:username/my-test-project.git
git init
git remote add origin git@github.com:usename//my-test-project.git
git push -u origin master
複製代碼
這樣就把本地倉庫和遠程倉庫關聯起來了github
初始化npm
在項目根目錄下即my-test-project
目錄下執行,npm init
,而後根據提示填寫相關信息,有些能夠略事後續修改。 要注意的是name字段,有幾個點要提醒:npm
npm ERR! You do not have permission to publish "my-test-project".
Are you logged in as the correct user? : my-test-project
複製代碼
index.js
文件,做爲測試,在裏面寫幾行簡單代碼,並export一個默認變量先登陸npm用戶,執行json
npm adduser // or npm login
Username: npm-user-name
Password:
Email: your-email
複製代碼
根據提示輸入正確的npm用戶名、密碼、郵箱,添加完後會默認登陸bash
執行post
npm publish
複製代碼
若是沒什麼問題,應該就發佈成功了。能夠去npm搜索發佈的包: my-test-project
,或者去本身的npm帳號下查看package測試
publish前測試
在npm init 完成以後,就能夠做爲一個依賴包供其餘模塊引用。根據上面的例子,把my-test-project文件夾放入另外的測試工程node_modules文件夾下面,這樣就能夠跟引入其餘模塊同樣,引入以前在index.js裏面export的測試變量,如ui
// my-test-project 下的index.js
const a = 'this is a test'
export default a // or module.exports = a
// 引用
import a from 'my-test-project' // or const a = require('my-test-project')
複製代碼
建議先測試完,沒有問題再publish
publish後測試是否有問題
publish後就更好辦了,直接像安裝其餘模塊同樣經過npm i 命令安裝,而後引用
更新包和發佈包的命令是同樣的,更新包只需修改package.json裏面的version
字段,也可使用npm 自帶的版本控制命令修改版本號,更新的步驟爲:
npm 提供官方提供了npm version
來進行版本控制,其效果跟手動修改package.json裏面的version字段是同樣的,好處在於,能夠在構建過程當中用npm version
命令自動修改,並且具備語義化即Semantic versioning
.
npm version [<newversion> | major | minor | patch | premajor | preminor |
prepatch | prerelease | from-git]
複製代碼
其語義爲:
major:主版本號(大版本)
minor:次版本號(小更新)
patch:補丁號(補丁)
premajor:預備主版本
preminor: 預備次版本
prepatch:預備補丁版本
prerelease:預發佈版本
複製代碼
如初始版本爲 1.0.0,執行相關類型命令後,對應的語意爲:
npm version patch // 1.0.1 表示小的bug修復
npm version minor // 1.1.0 表示新增一些小功能
npm version mmajor // 2.0.0 表示大的版本或大升級
npm version preminor // 1.1.0-0 後面多了個0,表示預發佈
複製代碼
能夠在當前模塊的package.json裏面看到相應的版本變化
因爲撤銷發佈會讓把要撤銷的包做爲依賴的包不能正常工做,因此npm官方對包的撤銷是有限制的:
unpublish is only allowed with versions published in the last 24 hours
)撤銷發佈的命令爲 npm unpublish
npm unpublish my-test-project
// 報錯
npm ERR! Refusing to delete entire project.
npm ERR! Run with --force to do this.
npm ERR! npm unpublish [<@scope>/]<pkg>[@<version>]
// 加 --force參數從新撤銷發佈
npm unpublish my-test-project --force
npm WARN using --force I sure hope you know what you are doing.
- my-test-project
複製代碼
npm unpublish
的推薦替代命令:
npm deprecate <pkg>[@<version>] <message>
複製代碼
這個命令,並不會在npm上裏撤銷已有的包,但會在任何人嘗試安裝這個包的時候獲得deprecated的警告,例如:
npm deprecate my-test-project 'this package is no longer maintained'
複製代碼
參考: