首頁  >  文章  >  web前端  >  幾種npm依賴套件管理分享

幾種npm依賴套件管理分享

小云云
小云云原創
2018-01-27 13:52:232322瀏覽

本文主要給大家介紹了關於你應該知道的幾類npm依賴包管理,npm 是node.js 裡的包管理器,是一個命令行工具,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。

npm 目前支援以下幾類依賴套件管理:

  • #dependencies

  • devDependencies


##peerDependencies

optionalDependencies

bundledDependencies / bundleDependencies







#如果你你想使用哪一種依賴管理,那麼你可以把它放在package.json中對應的依賴物件中,例如:

 "devDependencies": {
 "fw2": "^0.3.2",
 "grunt": "^1.0.1",
 "webpack": "^3.6.0"
 },
 "dependencies": {
 "gulp": "^3.9.1",
 "hello-else": "^1.0.0"
 },
 "peerDependencies": { },
 "optionalDependencies": { },
 "bundledDependencies": []

下面我們一一來看:dependencies

應用程式依賴,或稱為業務依賴,這是我們最常用的依賴套件管理物件!它用於指定應用程式依賴的外部套件,這些依賴是應用程式發布後正常執行時所需要的,但不包含測試時或本地打包時所使用的套件。可使用下面的命令來安裝:

npm install packageName --save
dependencies是一個簡單的JSON對象,包含包名與包版本,其中包版本可以是版本號或URL地址。例如:

{ 
 "dependencies" :{ 
 "foo" : "1.0.0 - 2.9999.9999", // 指定版本范围
 "bar" : ">=1.0.2 <2.1.2", 
 "baz" : ">1.0.2 <=2.3.4", 
 "boo" : "2.0.1", // 指定版本
 "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0", 
 "asd" : "http://asdf.com/asdf.tar.gz", // 指定包地址
 "til" : "~1.2", // 最近可用版本
 "elf" : "~1.2.3", 
 "elf" : "^1.2.3", // 兼容版本
 "two" : "2.x", // 2.1、2.2、...、2.9皆可用
 "thr" : "*", // 任意版本
 "thr2": "", // 任意版本
 "lat" : "latest", // 当前最新
 "dyl" : "file:../dyl", // 本地地址
 "xyz" : "git+ssh://git@github.com:npm/npm.git#v1.0.27", // git 地址
 "fir" : "git+ssh://git@github.com:npm/npm#semver:^5.0",
 "wdy" : "git+https://isaacs@github.com/npm/npm.git",
 "xxy" : "git://github.com/npm/npm.git#v1.0.27",
 }
}
devDependencies###開發環境依賴,僅次於dependencies的使用頻率!它的物件定義和dependencies一樣,只不過它裡面的套件只用於開發環境,不用於生產環境,這些套件通常是單元測試或打包工具等,例如gulp, grunt, webpack, moca, coffee等,可使用以下命令來安裝:###
npm install packageName --save-dev
###舉個栗子:###
{ "name": "ethopia-waza",
 "description": "a delightfully fruity coffee varietal",
 "version": "1.2.3",
 "devDependencies": {
 "coffee-script": "~1.6.3"
 },
 "scripts": {
 "prepare": "coffee -o lib/ -c src/waza.coffee"
 },
 "main": "lib/waza.js"
}
###prepare腳本會在發布前執行,因此使用者在編譯專案時不用依賴它。在開發模式下,執行npm install, 同時也會執行prepare腳本,開發時可以很容易的測試。 ######至此,你理解了--save和--save-dev的差別了嗎? #########peerDependencies#########同等依賴,或稱為同伴依賴,用於指定目前套件(也就是你寫的套件)相容的宿主版本。如何理解呢? 試想一下,我們寫一個gulp的插件,而gulp有多個主版本,我們只想相容最新的版本,此時就可以用同等依賴(peerDependencies)來指定:###
{
 "name": "gulp-my-plugin",
 "version": "0.0.1",
 "peerDependencies": {
 "gulp": "3.x"
 }
}
###當別人使用當我們的插件時,peerDependencies會告訴明確告訴使用方,你需要安裝該插件哪個宿主版本。 ######通常情況下,我們會在一個專案裡使用一個宿主(例如gulp)的許多插件,如果彼此之間存在宿主不相容,在執行npm install時,cli會拋出錯誤訊息來告訴我們,例如:###
npm ERR! peerinvalid The package gulp does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer gulp-cli-config@0.1.3 wants gulp@~3.1.9
npm ERR! peerinvalid Peer gulp-cli-users@0.1.4 wants gulp@~2.3.0
###運行指令npm install gulp-my-plugin --save-dev來安裝我們插件,我們來看下依賴圖譜:###
├── gulp-my-plugin@0.0.1
└── gulp@3.9.1
###OK, Nice!## ####注意,npm 1 與npm 2 會自動安裝同等依賴,npm 3 不再自動安裝,會產生警告!手動在package.json檔案中新增依賴項可以解決。 #########optionalDependencies#########可選依賴,如果有一些依賴套件即使安裝失敗,專案仍然能夠運行或希望npm繼續運行,就可以使用optionalDependencies。另外optionalDependencies會覆蓋dependencies中的同名依賴包,所以不要在兩個地方都寫。 ######舉個栗子,可選依賴套件就像程式的外掛一樣,如果存在就執行存在的邏輯,不存在就執行另一個邏輯。 ###
try {
 var foo = require('foo')
 var fooVersion = require('foo/package.json').version
} catch (er) {
 foo = null
}
if ( notGoodFooVersion(fooVersion) ) {
 foo = null
}

// .. then later in your program ..

if (foo) {
 foo.doFooThings()
}
###bundledDependencies / bundleDependencies#########打包依賴,bundledDependencies是一個包含依賴包名的數組對象,在發佈時會將這個對像中的包打包到最終的發布包裡。如:###
{
 "name": "fe-weekly",
 "description": "ELSE 周刊",
 "version": "1.0.0",
 "main": "index.js",
 "devDependencies": {
 "fw2": "^0.3.2",
 "grunt": "^1.0.1",
 "webpack": "^3.6.0"
 },
 "dependencies": {
 "gulp": "^3.9.1",
 "hello-else": "^1.0.0"
 },
 "bundledDependencies": [
 "fw2",
 "hello-else"
 ]
}
###執行打包指令npm pack, 在產生的fe-weekly-1.0.0.tgz套件中,將包含fw2和hello-else。 但值得注意的是,這兩個套件必須先在devDependencies或dependencies聲明過,否則打包會報錯。 ######相關推薦:############Spring Boot引入依賴套件Druid############node.js中的npm和webpack配置方法詳解############nodejs最新版安裝npm的使用方法分享#######

以上是幾種npm依賴套件管理分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn