前言
在現代新建一個 JS 相關的項目往往都是從 package.json
文件開始的,不過這個文件里需要的字段實在是太多了,正常人都記不住,所以 npm 官方提供了 npm init
命令幫助我們快速初始化 package.json
文件。執行之后會有一個交互式的命令行讓你輸入需要的字段值,當然如果你想直接使用默認值,也可以使用 npm init -y
來超速初始化。
npx
隨着技術的快速發展,發現初始化 package.json
已經無法滿足大家的需求了,越來越多的項目需要進行整個項目的初始化。腳手架工具應運而生,除了有通用的腳手架工具 yeoman, sao 之外,很多項目也會開發針對自己項目的腳手架工具,例如 vue-cli, create-react-app 以及專門用來初始化 ThinkJS 項目的腳手架工具 think-cli等。運行這些工具需要先使用 npm install -g
全局安裝這些模塊之后才能正常運行。每次都執行這兩部操作那其實是有點麻煩的,所以 npm@5.2.0
提供了 npx
命令將安裝運行兩個步驟合二為一,直接執行 npx think-cli
會先安裝 think-cli
模塊然后執行 think-cli
命令,最終完成腳手架的啟動。
npm init <initializer>
可能 npm 的維護者們都比較懶吧,他們發現這么執行還挺累的,所以在 npm@6.1.0
里增加了 npm init <initializer>
這種操作,簡單來說就是你執行 npm init thinkjs
的話 npm 會補全模塊名為 create-thinkjs
並執行 npx create-thinkjs
。
npm init thinkjs
# same as
npx create-thinkjs
npm init
和 npx
的執行基本是一致的,他們相對於直接執行全局命令來說比較大的優勢就是能保證命令模塊是最新版的,畢竟如果還要執行 npm update -g
的話又多了一部操作。
參考資料:《Create a project using the npm init initializer command》