標籤:0.12 files 代碼 start undle 編譯 部分 目錄結構 script
Name
必須欄位。
小提示:
- 不要在name中包含js, node字樣;
- 這個名字最終會是URL的一部分,命令列的參數,目錄名,所以不能以點號或底線開頭;
- 這個名字可能在require()方法中被調用,所以應該儘可能短;
Version
必須欄位。
Description
可選欄位,必須是字串。npm search的時候會用到。
Keywords
可選欄位,字串數組。npm search的時候會用到。
Homepage
可選欄位,沒有http://等帶協議首碼的URL。
Bugs
可選欄位,問題追蹤系統的URL或郵箱地址;npm bugs用的上。
{ "url" :"http://github.com/owner/project/issues", "email" :"[email protected]"}
License
可選欄位。
如果是使用一個普遍的license,比如BSD-3-Clause或MIT,直接使用:
{ "license" : "BSD-3-Clause" }
Author, contributors
都是可選欄位。author是一個人,contributors是一組人。
Author的格式如下:
{ "name" : "Barney Rubble", "email" : "[email protected]", "url" : "http://barnyrubble.tumblr.com/"}
這種格式也可以:
"Barney Rubble <[email protected]> (http://barnyrubble.tumblr.com/)"
Files
可選欄位,項目包含的一組檔案。如果是檔案夾,檔案夾下的檔案也會被包含。如果需要把某些檔案不包含在項目中,添加一個”.npmignore”檔案。這個檔案和”gitignore”類似。
Main
可選欄位。這個欄位的值是你程式主入口模組的ID。如果其他使用者需要你的包,當使用者調用require()方法時,返回的就是這個模組的匯出(exports)。
Bin
可選欄位。很多的包都會有執行檔案需要安裝到PATH中去。
這個欄位對應的是一個Map,每個元素對應一個{ 命令名:檔案名稱 }。
{ "bin" : { "npm" : "./cli.js" } }
Directories
用於指示包的目錄結構:
Directories.lib
指示庫檔案的位置。
Directories.bin
和前面的bin是一樣的,但如果前面已經有bin,那麼這個就無效。
除了以上兩個,還有Directories.doc& Directories.man & Directories.example。
Repository
可選欄位。用於指示代碼存放的位置。
"repository" : { "type" : "git" , "url" : "http://github.com/npm/npm.git" } "repository" : { "type" : "svn" , "url" : "http://v8.googlecode.com/svn/trunk/" }
Scripts
可選欄位,object。Key是生命週期事件名,value是在事件點要跑的命令。參考npm-scripts。
Config
可選欄位,object。
Config對象中的值在Scripts的整個周期中皆可用,專門用於給Scripts提供配置參數。
Dependencies
可選欄位,指示當前包所依賴的其他包。
{ "dependencies" : { "foo" : "1.0.0 - 2.9999.9999" , "bar" : ">=1.0.2 <2.1.2" , "baz" : ">1.0.2 <=2.3.4" , "boo" : "2.0.1" , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0" , "asd" : "http://asdf.com/asdf.tar.gz" , "til" : "~1.2" , "elf" : "~1.2.3" , "two" : "2.x" , "thr" : "3.3.x" }}
版本格式可以是下面任一種:
version
完全符合
>version
大於這個版本
>=version
大於或等於這個版本
<version
<=version
~version
非常接近這個版本
^version
與目前的版本相容
1.2.x
X代表任一數字,因此1.2.1, 1.2.3等都可以
http://...
Unix系統下使用的tarball的URL。
*
任何版本都可以
""
任何版本都可以
version1 - version2
等價於 >=version1 <=version2
.
range1 || range2
滿足任意一個即可
git...
Git地址
user/repo
devDependencies
可選欄位。如果只需要下載使用某些模組,而不下載這些模組的測試和文檔架構,放在這個下面比較不錯。
peerDependencies
可選欄位。相容性依賴。如果你的包是外掛程式,適合這種方式。
bundledDependencies
可選欄位。發布包時同時打包的其他依賴。
optionalDependencies
可選欄位。如果你想在某些依賴即使沒有找到,或則安裝失敗的情況下,npm都繼續執行。那麼這些依賴適合放在這裡。
Engines
可選欄位。既可以指定node版本:
{ "engines" : {"node" : ">=0.10.3 <0.12" } }
也可以指定npm版本:
{ "engines" : {"npm" : "~1.0.20" } }
engineStrick
可選欄位,布爾值。如果你肯定你的程式只能在制定的engine上運行,設定為true。
Os
可選欄位。指定模組可以在什麼作業系統上運行:
"os" : [ "darwin","Linux" ]"os" : [ "!win32" ]
CPU
可選欄位。指定CPU型號。
"cpu" : [ "x64","ia32" ]"cpu" : [ "!arm","!mips" ]
preferGlobal
可選欄位,布爾值。如果你的包是個命令列應用程式,需要全域安裝,就可以設為true。
Private
可選欄位,布爾值。如果private為true,npm會拒絕發布。這可以防止私人repositories不小心被發布出去。
publishConfig
可選欄位。發布時使用的配置值放這。
預設值
"scripts":{"start": "node server.js"}
如果你的包裡有server.js檔案,npm預設將執行: node server.js
.
"scripts":{"preinstall":"node-gyp rebuild"}
如果包裡有binding.gyp,
npm預設在preinstall命令時,使用node-gyp做編譯。
package.json欄位全解