package.json簡介javascript
package.json在Node項目中用於描述項目的一些基本信息,以及依賴的配置,通常每個Node項目的根目錄下都有一個package.json文件。html
在項目的根目錄中咱們能夠經過npm init來初始化一個package.json文件,其內容是一個Json對象,基本結構以下:java
{ "name": "package", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
package.json文件中包含了不少的屬性,這些屬性都是項目的一些基本信息以及一些配置信息,這裏是一些更詳細的信息,着重介紹一些咱們常常用到的屬性。node
name main屬性react
name和version屬性是package.json文件兩個不可或缺的屬性,一般name屬性和咱們項目的文件名稱是同樣的,version表示這個項目的版本號。jquery
main屬性指定了加載時的入口文件,當使用require()語法來加載一個模塊時,就會查看package.json文件的main屬性,main屬性的屬性值就是要加載的模塊。npm
在桌面新建一個文件夾(模塊)命名爲factory,在該文件夾內新建一個index.js文件,在index.js文件中寫入如下代碼:json
function create(){ var product = "我是一個產品"; return product; } exports.create = create;
而後在桌面上新建一個store文件夾,在該文件夾內新建一個store.js文件,在store.js文件中寫入如下代碼:函數
var factory = require("../factory"); var product = factory.create(); console.log(product);
在命令行中進入store文件夾輸入node store.js,能夠發現運行成功,在store.js中經過require()函數加載factory模塊時若是沒有package.json文件,默認就會加載模塊中的index.js文件。若是存在package.json文件這樣在require()加載一個模塊時,就會讀取package.json文件的main屬性,main屬性指定的入口文件就是require()要加載的文件:ui
如今經過命令行進入factory文件經過npm init命令初始化一個package.json文件,將package.json文件的main屬性改成demo.js,而後在將factory文件內的index.js文件更名爲demo.js,而後在命令行中進入store文件在執行node store.js,仍然是能夠成功運行的。
scripts屬性
scripts屬性能夠指定npm命令縮寫。在store文件夾中初始化package.json文件,而後添加scripts屬性:
執行npm run start仍然能夠運行成功,經過scripts屬性npm run start等價於node store.js。
關於scripts的更具體的使用請看這裏。
dependencies devDependencies屬性
當咱們在命令行中執行npm install jquery -save時會在當前目錄下新建一個node_modules文件夾,將jquery下載到node_modules文件內,並將該模塊的依賴寫入到dependencies內。若是執行npm install react -save-dev時會將react下載到node_modules文件下並將依賴寫入到devDependencies內。
"dependencies": { "jquery": "^3.1.1" }, "devDependencies": { "react": "^15.3.2" }
若是在寫入依賴以後咱們刪除node_module文件,而後執行npm install就會讀取package.json文件的dependencies和devDependencies屬性自動下載寫入的依賴模塊。