Javascript模塊化開發1——package.json詳解

1、環境安裝

Node.js 安裝包及源碼下載地址爲:https://nodejs.org/en/download/
在該頁面你能夠根據不一樣平臺系統選擇你須要的 Node.js 安裝包。
Node.js裏面集成了npm,npm是一種包管理工具,容許用戶從NPM服務器下載別人編寫的包或命令行程序並分享本身編寫的包或命令行程序。node

2、建立模塊

輸入命令npm init後根據提示輸入相關信息,如名稱,描述,版本等,將會建立一個初始的package.json。
接着能夠編輯相關屬性來定義該模塊,大多數的屬性都很直觀,下面只挑幾個進行說明:git

1.name

項目/模塊名稱。
命名規範以下:github

  • 名稱能夠前綴scope標識,如@myorg/mypackage。
  • 名字也將做爲require()命令的參數,因此應該儘可能簡明,長度必須小於等於214個字符。
  • 名字將會被做爲url的一部分,全部要符合http url的通常命名規則,不能包含url非法字符,也不能以"."(點)或者"_"(下劃線)開頭。
  • 不能包含大寫字母。
  • 名字裏不要再包含"js"和"node",且不要用和核心Node模塊相同的名字。
  • 若是包要發佈到NPM平臺上的話,最好先訪問https://www.npmjs.com/檢查下有沒有重名。

2.repository

用於指示代碼存放的位置。npm

"repository": {
  "type": "git",
  "url": "https://github.com/***.git"
}
"repository": {
  "type": "svn",
  "url": "https://***"
}

3.private

設爲true這個包將不會發布到NPM平臺下。若是不設置repository,則應該設置private爲true。json

4.files

包所包含的全部文件,能夠取值爲文件夾。
一般咱們仍是用.npmignore來去除不想包含到包裏的文件。
無論如何設置,有些文件會永遠都包含在包裏:服務器

package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
main裏包含的文件app

無論如何設置,有些文件會永遠都不能包含在包裏:svn

.git
CVS
.svn
.hg
.lock-wscript
.wafpickle-N
..swp
.DS_Store
._

npm-debug.log
.npmrc
node_modules
config.gypi
*.orig
package-lock.jsongrunt

5.main

main字段指定了加載的入口文件,require('moduleName')就會加載這個文件。這個字段的默認值是模塊根目錄下面的index.js。工具

6.browser

定義 npm 包在 browser 環境下的入口文件

7.Bin

bin項用來指定各個內部命令對應的可執行文件的位置。不少的包都會有執行文件須要安裝到PATH中去。
這個字段對應的是一個Map,每一個元素對應一個{ 命令名:文件名 },例如:

"bin" : {
  "myapp" : "./cli.js"
}

在安裝第三方帶有bin字段的npm,那可執行文件會被連接到當前項目的./node_modules/.bin中
可經過命令行node node_modules/.bin/myapp執行相關js文件

8.config

能夠用來添加命令行的環境變量,例如:

{
  "name" : "test",
  "config" : { "msg" : "hello" },
  "scripts" : { "start" : "node index.js" }
}

在 index.js 中,咱們能夠直接使用該環境變量:

console.log(process.env.npm_package_config_msg);

9.dependencies

指定運行時依賴的包。

10.devDependencies

指定開發時依賴的包。

11.peerDependencies

若是你的包是插件,而用戶在使用你的包時候,一般也會須要這些依賴(插件),那麼能夠將依賴列到這裏。

12.bundledDependencies

綁定的依賴包,發佈的時候這些綁定包也會被一同發佈。

13.optionalDependencies

可選的依賴,即便這些依賴沒有,也能夠正常安裝使用。

14.scripts

定義可被npm run command執行的全部命令,能夠經過輸入npm run查看全部的命令列表。
好比下面定義了運行 npm run start和npm run stop時,所要執行的命令。在cmd下輸入命令npm run start至關於輸入命令node start.js"

"scripts": {
  "start": "node start.js",
  "stop": "node stop.js",
}

scripts命令具備如下特性:

  • 執行npm run command時,會先安裝devDependencies中所定義的依賴的包,再運行command所定義的命令。
    例如:
"scripts": {
  "build": "npm install && grunt"
}

運行npm run build會先安裝devDependencies中定義的一些模塊,而後再運行npm install和grunt。

  • 支持生命週期鉤子
    npm支持pre- 和 post-兩種鉤子,前者是在腳本運行前,後者是在腳本運行後執行。全部的命令腳本均可以使用鉤子(包括自定義的腳本)。
    好比運行npm run build,會按如下順序執行:
    npm run prebuild -> npm run build -> npm run postbuild
  • npm提供了一些針對當前包的內置命令,並設置相關的默認行爲。這些默認行爲能夠在scripts中改寫其行爲。 相關的內置命令有: npm start: npm run start的簡寫,若是不在script中配置start,那麼npm start默認執行node server.js npm stop: npm run stop的簡寫,執行自定義stop腳本,沒有默認行爲。 npm restart: npm run stop&&npm run restart&&npm run start的簡寫。 npm test ,npm run test的簡寫,執行自定義test腳本,沒有默認行爲。
相關文章
相關標籤/搜索