一、環境安裝 Node.js 安裝包及源碼下載地址為: "https://nodejs.org/en/download/" 。 在該頁面你可以根據不同平臺系統選擇你需要的 Node.js 安裝包。 Node.js裡面集成了npm,npm是一種包管理工具,允許用戶從NPM伺服器下載別人編寫的包或命令行 ...
一、環境安裝
Node.js 安裝包及源碼下載地址為:https://nodejs.org/en/download/。
在該頁面你可以根據不同平臺系統選擇你需要的 Node.js 安裝包。
Node.js裡面集成了npm,npm是一種包管理工具,允許用戶從NPM伺服器下載別人編寫的包或命令行程式並分享自己編寫的包或命令行程式。
二、創建模塊
輸入命令npm init後根據提示輸入相關信息,如名稱,描述,版本等,將會創建一個初始的package.json。
接著可以編輯相關屬性來定義該模塊,大多數的屬性都很直觀,下麵只挑幾個進行說明:
1.name
項目/模塊名稱。
命名規範如下:
- 名稱可以首碼scope標識,如@myorg/mypackage。
- 名字也將作為require()命令的參數,所以應該儘量簡明,長度必須小於等於214個字元。
- 名字將會被作為url的一部分,所有要符合http url的一般命名規則,不能包含url非法字元,也不能以"."(點)或者"_"(下劃線)開頭。
- 不能包含大寫字母。
- 名字里不要再包含"js"和"node",且不要用和核心Node模塊相同的名字。
- 如果包要發佈到NPM平臺上的話,最好先訪問https://www.npmjs.com/檢查下有沒有重名。
2.repository
用於指示代碼存放的位置。
"repository": {
"type": "git",
"url": "https://github.com/***.git"
}
"repository": {
"type": "svn",
"url": "https://***"
}
3.private
設為true這個包將不會發佈到NPM平臺下。如果不設置repository,則應該設置private為true。
4.files
包所包含的所有文件,可以取值為文件夾。
通常我們還是用.npmignore來去除不想包含到包里的文件。
不管如何設置,有些文件會永遠都包含在包里:
package.json
README
CHANGES / CHANGELOG / HISTORY
LICENSE / LICENCE
NOTICE
main里包含的文件
不管如何設置,有些文件會永遠都不能包含在包里:
.git
CVS
.svn
.hg
.lock-wscript
.wafpickle-N
..swp
.DS_Store
._
npm-debug.log
.npmrc
node_modules
config.gypi
*.orig
package-lock.json
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腳本,沒有預設行為。