首頁 web前端 js教程 幾種npm依賴套件管理分享

幾種npm依賴套件管理分享

Jan 27, 2018 pm 01:52 PM
依賴 分享 管理

本文主要給大家介紹了關於你應該知道的幾類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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

夸克網盤怎麼分享到百度網盤? 夸克網盤怎麼分享到百度網盤? Mar 14, 2024 pm 04:40 PM

  夸克網盤和百度網盤都是很便利的儲存工具,不少的用戶都在詢問這兩款軟體互通嗎?夸克網盤怎麼分享到百度網盤?下面就讓本站來為用戶們來仔細的介紹一下夸克網盤的文件怎麼保存到百度網盤方法吧。夸克網盤的文件怎麼保存到百度網盤方法1、想要知道怎麼把夸克網盤的文件轉到百度網盤,首先在夸克網盤上下載需要保存的文件,然後打開百度網盤客戶端後,選擇壓縮檔案要儲存的資料夾,雙擊開啟該資料夾。  2、開啟該資料夾後,點選視窗左上角區域的「上傳」。  3、在電腦中找到需要上傳的壓縮文件,點選選

如何利用Redis實現分散式事務管理 如何利用Redis實現分散式事務管理 Nov 07, 2023 pm 12:07 PM

如何利用Redis實現分散式事務管理引言:隨著網際網路的快速發展,分散式系統的使用越來越廣泛。在分散式系統中,事務管理是一項重要的挑戰。傳統的事務管理方式在分散式系統中難以實現,且效率低。而利用Redis的特性,我們可以輕鬆實現分散式事務管理,提高系統的效能和可靠性。一、Redis簡介Redis是一種基於記憶體的資料儲存系統,具有高效的讀寫效能和豐富的數據

網路易雲音樂怎麼分享到微信朋友圈_網易雲音樂分享到微信朋友圈教程 網路易雲音樂怎麼分享到微信朋友圈_網易雲音樂分享到微信朋友圈教程 Mar 25, 2024 am 11:41 AM

1.首先我們進入到網易雲音樂中,然後在軟體首頁介面中,點選進入到歌曲的播放介面中。 2.然後在歌曲播放介面中,找到右上方的分享功能按鈕,如下圖紅框所示位置,點擊選擇分享的管道;在分享管道中,點擊底部的「分享至」選項,然後選擇第一個“微信朋友圈”,即可將內容分享至微信朋友圈。

百度網盤怎麼分享文件給好友 百度網盤怎麼分享文件給好友 Mar 25, 2024 pm 06:52 PM

近期,百度網盤安卓客戶端迎來了全新的8.0.0版本,這個版本不僅帶來了許多變化,還增添了許多實用功能。其中,最引人注目的便是資料夾共享功能的增強。現在,使用者可以輕鬆邀請好友加入,共同分享工作與生活中的重要文件,實現更便利的協作與分享。那麼究竟該如何分享給好友自己需要分享的文件呢,下文中本站小編就會為大家帶來詳細內容介紹,希望能幫助大家! 1)開啟百度雲APP,先點選在首頁選擇相關的資料夾,再點選介面右上角的【...】圖示;(如下圖)2)接著點選「共用成員」一欄中的【+ 】,最後在勾選所

芒果tv會員帳號分享2023 芒果tv會員帳號分享2023 Feb 07, 2024 pm 02:27 PM

芒果TV擁有各種類型的電影、電視劇、綜藝等資源,用戶可以在其中自由的選擇觀看。芒果tv會員不僅能夠看到全部的VIP劇而且還能夠設定最高清的畫質,幫助用戶爽快看劇,下面小編就給大家帶來一些芒果tv免費的會員帳號供用戶們使用,趕緊來看一看吧。芒果tv最新會員帳號免費分享2023:注意:都是收集的最新會員帳號,可以直接登入使用,不要隨意的修改密碼。帳號:13842025699密碼:qds373帳號:15804882888密碼:evr6982帳號:13330925667密碼:jgqae帳號:1703

CentOS安裝gnuplot及CentOS安裝向日葵缺少依賴 CentOS安裝gnuplot及CentOS安裝向日葵缺少依賴 Feb 13, 2024 pm 11:39 PM

LINUX是一種廣泛使用的作業系統,它具有高度的可自訂性和穩定性,CentOS是基於RedHatEnterpriseLinux(RHEL)原始碼構建的一個免費開源的作業系統,被廣泛用於伺服器和桌面環境,在CentOS上安裝軟體套件是日常使用中常見的任務之一,本文將介紹如何在CentOS上安裝gnuplot和解決向日葵軟體缺少依賴的問題。 Gnuplot是一款功能強大的繪圖工具,它可以產生各種類型的圖表,包括二維和三維的資料視覺化,要在CentOS上安裝gnuplot,您可以按照以下步驟進行操作:1.

解決Discuz微信分享無法顯示的問題 解決Discuz微信分享無法顯示的問題 Mar 09, 2024 pm 03:39 PM

標題:解決Discuz微信分享無法顯示的問題,需要具體程式碼範例隨著行動網路的發展,微信成為了人們日常生活中不可或缺的一部分。在網站開發中,為了提升使用者體驗和擴大網站的曝光度,許多網站會整合微信分享功能,讓使用者能夠輕鬆分享網站的內容到朋友圈或微信群組。然而,有時在使用Discuz等開源論壇系統時,會遇到微信分享無法顯示的問題,這給使用者體驗帶來了一定的困

ECharts是否依賴jQuery?深入分析 ECharts是否依賴jQuery?深入分析 Feb 27, 2024 am 08:39 AM

ECharts是否需要依賴jQuery?詳細解讀,需要具體程式碼範例ECharts是一個優秀的資料視覺化函式庫,提供了豐富的圖表類型和互動功能,廣泛應用於Web開發。在使用ECharts時,很多人會有一個疑問:ECharts是否需要依賴jQuery呢?本文將對此進行詳細解讀,並給出具體的程式碼範例。首先,要明確的是,ECharts本身並不依賴jQuery,它是一個

See all articles