Knight Li design

Knight Li design

  • TOP
  • WORKS
  • STEP INTO TAINAN
  • BLOG
  • CONTACT
ALL TAGS
  • TOP
  • WORKS
  • STEP INTO TAINAN
  • BLOG
  • CONTACT

BLOG

npm CLI

程式技術教學

PUBLIC DATE:2019.11.13

B-1120196
 
 npm CLI





創建 npm 項目


使用 npm 前,需先下載安裝 node.js 並檢查 npm 已更新到最新版本。
運行 npm init 用來初始化生成一個新的 package.json 文件。



$ npm init -y





npm 常用 CLI


以下為 npm 平時常用的 CLI,並非所有。更多 CLI 請查閱:npm CLI。


01.npm [version/-v]
當前項目的版本號。
02.npm init [--yes/-y]
互動式創建 / 更新 package.json 文件。
※ --yes/-y:以默認值生成 package.json 文件。
03.npm install
添加所有 package.json 中的依賴包。
04.npm install [package] [--save-dev/-D]
添加依賴包。
※ --dev / -D:為開發或測試環境。
05.npm install --package-lock
生成鎖定文件。
06.npm uninstall [package]
移除依賴包,並更新 package.json 和 yarn.lock。
07.npm update
升級所有 package.json 中的依賴包。
08.npm update [package]
升級依賴包。
09.npm ls [--depth]
列出已安裝依賴包。
※ --depth=0:列表深度,從0開始。
10.npm outdated [package]
檢查過時的依賴包。
11.npm run [scripts]
運行 package.json 中預定義的 scripts 腳本。
12.npm cache [add/clear/verify]
操作緩存。
※ 添加:`add`;清除緩存:`clean`;驗證:`verify`





創建包


包是在模塊基礎上更深一步的抽象,node.js 的包類似於 C/C++ 的函數庫或者 Java、.Net 的類庫。它將某個獨立的功能封裝起來,用於發布、更新、依賴管理和版本控制。 node.js 根據 CommonJS 規範實現了包機制,開發了 npm 來解決包的發布和獲取需求。
node.js 的包是一個目錄,其中包含了一個 JSON 格式的包說明文件 package.json。嚴格符合 CommonJS 規範的包應該具備以下特徵:

1. package.json 必須在包的頂層目錄下。
2. 二進製文件應該在 bin 目錄下。
3. JavaScript 代碼應該在 lib 目錄下。
4. 文檔應該在 doc 目錄下。
5. 單元測試應該在 test 目錄下。

node.js 對包的要求並沒有這麼嚴格,只要頂層目錄下有 package.json,並符合一些規範即可。當然為了提高兼容性,我們還是建議你在製作包的時候,嚴格遵守 CommonJS 規範。

我們也可以把文件夾封裝為一個模塊,即所謂的包。包通常是一些模塊的集合,在模塊的基礎上提供了更高層的抽象,相當於提供了一些固定接口的函數庫。通過定制 package.json,我們可以創建更複雜,更完善,更符合規範的包用於發布。

node.js 在調用某個包時,會首先檢查包中 packgage.json 文件的 main 字段,將其作為包的接口模塊,如果 package.json 或 main 字段不存在,會嘗試尋找index.js 或 index.node 作為包的接口。

package.json 是 CommonJS 規定的用來描述包的文件,完全符合規範的 package.json 文件應該含有以下字段:


01.name
package.json 中最重要的屬性是 name 和 version 兩個屬性,這兩個屬性是必須要有的,否則模塊就無法被安裝,這兩個屬性一起形成了一個 npm 模塊的唯一標識符。模塊中內容變更的同時,模塊版本也應該一起變化。包的名字,必須是唯一的,由小寫英文字母、數字和下劃線組成,不能包含空格。
02.version
version 必須可以被 npm 依賴的一個 node-semver 模塊解析。符合語義化版本識別規範的版本字符串。
03.description
包的簡要說明。方便別人了解你的模塊作用,搜索的時候也有用。
04.keywords
一個字符串數組,方便別人搜索到本模塊。
05.homepage
項目主頁url。
注意:這個項目主頁 url 和 url 屬性不同,如果你填寫了 url 屬性,npm 註冊工具會認為你把項目發佈到其他地方了,獲取模塊的時候不會從 npm 官方倉庫獲取,而是會重定向到 url 屬性配置的地址。
06.bugs
提交 bug 的地址,可以是網址或者電子郵件地址,被你的模塊坑到的人可以通過這裡吐槽。
07.license
許可證數組,每個元素要包含 type(許可證的名稱)和 url(鏈接到許可證文本的地址)字段。你應該為你的模塊制定一個協議,讓用戶知道他們有何權限來使用你的模塊,以及使用該模塊有哪些限制。最簡單的,例如你用 BSD-3-Clause 或 MIT 之類的協議。可以在 SPDX 這個地址查閱協議列表。
08.maintainers
維護者數組,每個元素要包含 name 、email(可選)、web(可選)字段。
09.contributors
貢獻者數組,格式與 maintainers 相同。包的作者應該是貢獻者數組的第一個元素。
10.repository
倉庫託管地址數組,每個元素要包含 type(倉庫的類型,如 git)、url(倉庫的地址)和 path(相對於倉庫的路徑,可選)字段。
11.dependencies
包的依賴,一個關聯數組,由包名稱和版本號組成。dependencies 屬性是一個對象,配置模塊依賴的模塊列表,key 是模塊名稱,value 是版本範圍,版本範圍是一個字符,可以被一個或多個空格分割。dependencies 也可以被指定為一個 git 地址或者一個壓縮包地址。不要把測試工具或 transpilers 寫到 dependencies 中。





發佈包


通過使用 npm init 可以根據交互式回答產生一個符合標準的 package.json。創建一個 index.js 作為包的接口,一個簡單的包就製作完成了。在發布前,我們還需要獲得一個帳號用於今後維護自己的包,使用 npm adduser 根據提示完成帳號的創建完成後可以使用 npm whoami 檢測是否已經取得了帳號。接下來,在 package.json 所在目錄下運行 npm publish,稍等片刻就可以完成發布了,打開瀏覽器,訪問 npm 搜尋就可以找到自己剛剛發布的包了。
現在我們可以在世界的任意一台計算機上使用 npm install [包名稱] 命令來安裝它。
如果你的包將來有更新,只需要在 package.json 文件中修改 version 字段,然後重新使用 npm publish 命令就行了。如果你對已發布的包不滿意,可以使用 npm unpublish 命令來取消發布。

TAGSALL TAGS

  • # JavaScript
  • # npm
  • # CLI

SHARE

https://knight-li.com/blog/B-1120196/detail

RELATED

  • npm CLI

    2019.08.17

    Laravel PHP Artisan CLI

    程式技術教學

  • npm CLI

    2021.08.27

    webpack 配置

    程式技術教學

  • JavaScript 取得各瀏覽器捲軸寬度

    PREV POST JavaScript 取得各瀏覽器捲軸寬度

  • 兒子滿週歲生日

    NEXT POST 兒子滿週歲生日

Knight Li design

CONTACT

©Knight Li design, All Rights Reserved