初學Node(二)package.json文件


package.json簡介

  package.json在Node項目中用於描述項目的一些基本信息,以及依賴的配置,一般每一個Node項目的根目錄下都有一個package.json文件。

  在項目的根目錄中我們可以通過npm init來初始化一個package.json文件,其內容是一個Json對象,基本結構如下:

{
  "name": "package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

  package.json文件中包含了很多的屬性,這些屬性都是項目的一些基本信息以及一些配置信息,這里是一些更詳細的信息,着重介紹一些我們經常用到的屬性。

name main屬性

  name和version屬性是package.json文件兩個不可或缺的屬性,通常name屬性和我們項目的文件名稱是一樣的,version表示這個項目的版本號。

  main屬性指定了加載時的入口文件,當使用require()語法來加載一個模塊時,就會查看package.json文件的main屬性,main屬性的屬性值就是要加載的模塊。

  在桌面新建一個文件夾(模塊)命名為factory,在該文件夾內新建一個index.js文件,在index.js文件中寫入以下代碼:

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()要加載的文件:

  現在通過命令行進入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屬性自動下載寫入的依賴模塊。

 


免責聲明!

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



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