package.json 詳解


package.json

該文件定義了項目所需的各種模塊,以及配置信息(名稱,版本,許可證等元數據)

npm install 會根據這個配置文件自動下載所需要的模塊

最簡單的package.json

只包含:項目名稱和項目版本

{
  "name" : "xxx",	# 項目名稱
  "version" : "0.0.0",	# 項目版本:大版本.次要版本.小版本
}

package.json文件就是一個JSON對象,該對象的每一個成員就是當前項目的一項設置

常見的詳細package.json

{
	"name": "Hello World",
	"version": "0.0.1",
	"author": "張三",
	"description": "第一個node.js程序",
	"keywords":["node.js","javascript"],
	"repository": {
		"type": "git",
		"url": "https://path/to/url"
	},
	"license":"MIT",
	"engines": {"node": "0.10.x"},
	"bugs":{"url":"http://path/to/bug","email":"bug@example.com"},
	"contributors":[{"name":"李四","email":"lisi@example.com"}],
	"scripts": {
        # npm 命令行縮寫,運行npm run start時,執行這個bash
		"start": "node index.js"
	},
	"dependencies": {	# 項目依賴,安裝模塊時如果輸入--save就會存在這里
		"express": "latest",	# 安裝最新版本
		"mongoose": "~3.8.3",	# 安裝3.8.x的最新版本,不低於3.8.3(不改變大版本號和次要版本號)
       	 "mongoose": "^3.8.3",	# 安裝3.x.x的最新版本,不低於3.8.3(不改變大版本號)
		"handlebars-runtime": "~1.0.12",
		"express3-handlebars": "~0.5.0",
		"MD5": "~1.2.0"
	},
	"devDependencies": {	# 開發依賴,安裝模塊時如果輸入--save-dev就會存在這里
		"bower": "~1.2.8",
		"grunt": "~0.4.1",
		"grunt-contrib-concat": "~0.3.0",
		"grunt-contrib-jshint": "~0.7.2",
		"grunt-contrib-uglify": "~0.2.7",
		"grunt-contrib-clean": "~0.5.0",
		"browserify": "2.36.1",
		"grunt-browserify": "~1.3.0",
	}
}

常用命令

# package.json文件可以手工編寫,也可以使用npm init命令自動生成
# 經過互動方式輸入項目名稱和版本等資料,進行自動生成
npm init


# 有了package.json文件后直接使用npm install就會安裝所需要的模塊
npm install


# 如果模塊不在package.json文件中,可以單獨安裝這個模塊
npm install express --save	# 寫入項目依賴dependencies
npm install express --save-dev	# 寫入項目開發依賴devDependencies

peerDependencies

{
    #安裝chai-as-promised模塊時,主程序chai必須一起安裝,而且chai的版本必須是1.x。如果你的項目指定的依賴是chai的2.0版本,就會報錯
  "name": "chai-as-promised",
  "peerDependencies": { 
    "chai": "1.x"
  }
}

bin字段

"bin": {
  "someTool": "./bin/someTool.js"
}

# 指定,someTool 命令對應的可執行文件為 bin 子目錄下的 someTool.js。Npm會尋找這個文件,在node_modules/.bin/目錄下建立符號鏈接。

# 在上面的例子中,someTool.js會建立符號鏈接node_modules/.bin/someTool。
# 由於node_modules/.bin/目錄會在運行時加入系統的PATH變量,因此在運行npm時,就可以不帶路徑,直接通過命令來調用這些腳本

因此,像下面這樣的寫法可以采用簡寫

"scripts": {  
  "start": './node_modules/bin/someTool.js build'
}

// 簡寫為

"scripts": {  
  "start": 'someTool build'
}

所有node_modules/.bin/目錄下的命令,都可以用npm run [命令]的格式運行。在命令行下,鍵入npm run,然后按tab鍵,就會顯示所有可以使用的命令

main字段

main字段指定了加載的入口文件,require('moduleName') 就會加載這個文件

這個字段的默認值是模塊根目錄下面的index.js

config字段

用於添加命令行的環境變量

# package.json

{
  "name" : "foo",
  "config" : { "port" : "8080" },	# 添加環境變量
  "scripts" : { "start" : "node server.js" }
}

# server.js
http
  .createServer(...)
  .listen(process.env.npm_package_config_port)	# 引用config的值
npm run start	# 這時可以得到設定的環境變量

npm config set foo:port 80	# 用戶可以改變這個值

其他字段

# browser 指定該模板供瀏覽器使用的版本
# Browserify這樣的瀏覽器打包工具,通過它就知道該打包那個文件(?)
"browser": {
  "tipso": "./node_modules/tipso/src/tipso.js"
},


# engines 指明該模塊運行的平台,如Node版本或者瀏覽器
{ "engines" : { "node" : ">=0.10.3 <0.12" } }
{ "engines" : { "npm" : "~1.0.20" } }

# man 指定當前模塊的man文檔的位置
# ("man" 是英文單詞manual的縮寫,中文意為手冊、幫助文檔)
"man" :[ "./doc/calc.1" ]

# style 指定供瀏覽器使用時,樣式文件所在位置
"style": [
  "./node_modules/tipso/src/tipso.css"
]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM