之前看了蠻久阮大師的javascript標準參考教程。
前面和邊上的妹紙關於dependencies和devDependencies討論了一下,看來還是要梳理一下知識點。
(講道理,用了部落格一個多月,整理了一些知識點,有時候用到想不起來就過來查一下,很方便,新技能get。 []~( ̄▽ ̄)~*)
每個項目的根目錄下一般都有一個package.json檔案,定義項目所需要的各種模組,以及項目的配置資訊。npm install則是根據這個設定檔,自動下載所需要的模組,也就是設定項目所需的運行和開發環境。
package.json檔案可以手工編寫,也可以用npm init命令自動產生,除了項目名稱和項目版本是必填的,其他都是選填的。 最簡單的package.json
{ "name":"aaa", //項目名稱 "version":"0.0.0" //項目版本(大版本.次要版本.小版本)}
package是一個JSON對象,對象的每個成員就是當前項目的一項設定。 script欄位
script指定運行指令碼命令的npm命令列縮寫。
"script":{ "start":"node index.js", "test":"tap test/*.js"}//運行npm run start時,執行node index.js命令//運行npm run test時,執行tap test/*.js命令dependencies欄位,devDependencies欄位
dependencies欄位指定項目運行所依賴的模組。
devDependencies欄位指定項目開發所需要的模組。
{ "devDependencies":{ "browserify":"~13.0.0", "babel-core":"^6.5.0" }}//模組名:對應的版本
對應的版本:
指定版本: 比如1.2.2,安裝時只安裝指定版本1.2.2
波浪號(tilde) + 指定版本:比如~1.2.2,表示安裝不低於1.2.2的1.2.x最新版本,但是不會安裝1.3.x,等於只會影響小版本的版本號碼。
插入號(caret) + 指定版本 : 比如^1.2.2,表示安裝不低於1.2.2的1.x.x最新版本,但是不會安裝2.x.x,等於不會影響大版本號碼。如果大版本號碼為0,則插入號和波浪號效果一樣,不會改變次要版本號碼。
latest:安裝最新的版本
如果一個模組不在package.json檔案匯總,則可以單獨安裝這個模組,並使用相應的參數將其寫入package.json中。
$ npm install express --save $ npm install express --save-dev
例如安裝上面的express模組,–save表示將模組寫入dependencies屬性,–save-dev表示將模組寫入devDependencies屬性。 peerDependencies
假設項目依賴A模組和B模組的1.0版本,那麼依賴裡面寫A:1.0,B:1.0,但是A模組本身依賴B模組的2.0版本,然後不知道,用的時候報錯了。這就很尷尬了。這時候就可以用peerDependencies,用來供A模組指定其所需要的主工具的版本。
{ "name": "chai-as-promised", "peerDependencies": { "chai": "1.x" }}
在A模組內部的package裡面寫。這樣就是說在安裝chai-as-promised時,chai必須一起安裝。如果項目指定的依賴是chai的2.0版本就報錯。
npm從3.0版本開始peerDependencies不再預設安裝。。- -… bin欄位
bin用來指定各個內部命令對應的可執行檔的位置。
"bin":{ "someTool":"./bin/someTool.js"}//someTool命令對應可執行檔為bin子目錄下的someTool.jsmain欄位
main欄位指定載入的入口檔案,require(‘moduleName’)就會載入這個檔案。預設為根目錄下的index.js config欄位
用於向環境變數輸出值
{ "name" : "foo", "config" : { "port" : "8080" }, "scripts" : { "start" : "node server.js" } }
//server.js引用欄位的值
http.createServer(…).listen(process.env.npm_package_con fig_port) browser欄位
指定該模板供瀏覽器使用的版本。 engines欄位
指明項目所需要的node.js版本 man欄位
指定當前模組的man文檔位置 preferGlobal欄位
布爾值,使用者不將該模組安裝為全域模組時,要不要顯示警告。 style欄位
供指定瀏覽器使用,樣式檔案所在的位置。
我是看著阮大師的文檔大致寫了下,加深自己的記憶。剛才項目上碰到依賴問題還真的派上用場了。厲害了。
連結地址:http://javascript.ruanyifeng.com/nodejs/packagejson.html#toc0