[TOC]
您可以發布任何具有 package.json 文件的目錄。 本章介紹如何首次發布軟件包,以及如何在以后更新軟件包。
# 如何發布一個包
## 一、 準備
### 1. 了解npm政策
在開始之前,如果您對網站禮儀,命名,許可或其他準則有疑問,最好查看 npm 的[政策](https://www.npmjs.com/policies)。
### 2. 創建一個用戶帳戶
要發布,您必須是 npm 注冊用戶。 如果您不是用戶,請使用 `npm adduser` 創建一個帳戶。 如果您在網站上創建了用戶帳戶,請使用 npm login 從終端訪問您的帳戶。
測試:
* 從終端輸入 `npm whoami` 以查看您是否已經登錄(從技術上講,這也意味著您的憑證已經存儲在本地)。
* 檢查您的用戶名是否已經通過 https://npmjs.com/~username 添加到注冊表中。例如,https://www.npmjs.com/~carolynawombat 。
### 3. 查看軟件包目錄
#### 3.1 查看內容
請注意,除非被本地 `.gitignore` 或 `.npmignore` 文件忽略,否則將包含目錄中的所有內容。 要了解如何使用這些命令,請參閱 [npm-developers](https://docs.npmjs.com/misc/developers) 。
#### 3.2 查看 package.json 文件
閱讀 [ Working with package.json](https://docs.npmjs.com/getting-started/using-a-package.json) 以確保您所需的細節反映在 packag 中。
#### 3.3 選擇一個名字
為您的包選擇一個唯一的名稱。 嘗試選擇一個描述性名稱:
* 還沒有被別人擁有
* 不是拼寫像另一個名字,除了錯別字
* 不會混淆他人的作者身份
* 符合npm政策準則。 例如,請勿將您的軟件包命名為冒犯性的,并且不要使用他人的商標名稱。
* 在package.json文件的相應行中指定名稱。
為您的包選擇一個唯一的名稱。 嘗試選擇一個描述性名稱:
還沒有被別人擁有
不是拼寫像另一個名字,除了錯別字
不會混淆他人的作者身份
符合npm政策準則。 例如,請勿將您的軟件包命名為冒犯性的,并且不要使用他人的商標名稱。
在package.json文件的相應行中指定名稱。
注意:如果您使用 [scopes](https://docs.npmjs.com/cli/version),前3個警告不適用。
#### 3.4 包括文檔(readme.md)
npm 建議您包含一個自述文件來記錄您的軟件包。 自述文件必須具有文件名readme.md 。 文件擴展名.md表示該文件是一個 [markdown](https://guides.github.com/features/mastering-markdown/#what) 文件。 當有人發現你的軟件包時,這個文件將出現在 npm 網站上。
在開始之前,請查看一些包頁面,以獲取可添加到自述文件中的信息的想法,并了解為什么這非常重要。
1. 使用任何文本編輯器創建一個文件。
2. 將其保存在名為 readme.md 的項目目錄中
3. 當您發布時,此文檔將顯示在人們下載您的軟件包的網頁上。
## 二、發布
使用 `npm publish` 發布軟件包 。
## 三、測試
訪問 https://npmjs.com/package/yourPackageName 。 你應該看到一個關于你的新軟件包的網頁。 它可能看起來有點像這樣:

## 四、恭喜,發布成功!
# 如何更新軟件包
## 如何更新版本號
當您進行更改時,您可以使用此命令更新軟件包
`npm version <update_type>`
其中<update_type>是[語義版本](https://docs.npmjs.com/getting-started/semantic-versioning)控制發布類型之一,即 patch,minor 或 major。
該命令將更改 package.json 中的版本號。
注意:如果你已經將一個標簽與你的 npm 賬戶關聯起來,那么這個標簽還會添加一個帶有更新版本號的標簽到你的 git 倉庫。
更新[版本號](https://docs.npmjs.com/cli/version)后,再次運行 `npm publish`。
測試:訪問 https://npmjs.com/package/yourPackageName 。 包號應該已經更新。
## 如何更新自述文件
顯示在網站上的自述文件將不會更新,除非發布新版本的軟件包,所以您需要運行 `npm version patch` 和 `npm publish` 來更新網站上顯示的文檔。
# 學到更多
* 要了解關于節點模塊和軟件包的更多信息,請[參見此處](https://docs.npmjs.com/getting-started/packages)。
* 要了解語義版本控制,請[單擊此處](https://docs.npmjs.com/getting-started/semantic-versioning)。
* 要詳細了解標簽,請[點擊此處](https://docs.npmjs.com/getting-started/using-tags)。
* 要了解更多關于package.json文件的信息,請[點擊這里](https://docs.npmjs.com/getting-started/using-a-package.json)。
* 要了解有關命名的更多信息,包括npm如何保護您免受域名困境的困擾,請[點擊此處](https://gist.github.com/ashleygwilliams/e466c1e9fd3be42545da511239edd554)。
> [原文鏈接](https://docs.npmjs.com/getting-started/publishing-npm-packages#preparation)
- 第一章 入門
- 01 - 什么是npm?
- 02 - 如何找到和選擇軟件包
- 03 - 如何設置新的npm賬戶并安裝npm
- 04 - 如何安裝本地軟件包
- 05 - 使用package.json
- 06 - 如何更新本地軟件包
- 07 - 如何卸載本地軟件包
- 08 - 如何安裝全局包
- 09 - 如何更新全局包
- 10 - 如何卸載全局軟件包
- 11 - 如何創建Node.js模塊
- 12 - 如何發布和更新軟件包
- 13 - 如何使用語義版本控制
- 14 - 如何使用作用域包
- 15 - 如何用dist-tags標簽包
- 16 - 如何使用雙因素認證
- 17 - 如何使用安全令牌
- 18 - 如何更改配置文件設置
- 19 - 了解包和模塊
- 20 - 如何防止權限錯誤
- 第二章 私人包裹
- 第三章 故障排除
- 第四章 使用npm
- 第五章 CLI命令
- 第七章 配置npm
- 第八章 npm,Inc.