package.json字段詳解

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做編譯。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章