全局安裝與本地安裝
一、全局安裝:
npm install -g//(這里-g是-global的簡寫)
通過上面的命令行(帶-g修飾符)安裝某個包叠国,就叫全局安裝未檩。
安裝位置:通常全局包安裝在node目錄下的node_modules文件夾。
可以通過執(zhí)行下面幾條命令查看node粟焊、npm的安裝目錄和全局包的安裝目錄冤狡。
which node//查看node的安裝目錄
which npm//查看npm的安裝目錄
npm root -g//查看全局包的安裝目錄
npm list -g --depth0//查看全局安裝過的包
二、本地安裝:
npm install (后面可以加幾種修飾符项棠,主要有兩種--save-dev和--save)
通過上面的命令行安裝某個包悲雳,就叫本地安裝。
安裝位置:包安裝在你當前項目文件夾下的node_modules文件夾中香追。
三合瓢、開發(fā)依賴和生產依賴
順著上面講到的本地安裝,本地安裝有兩種主要的安裝方式:
保存到開發(fā)依賴(devDependencies): npm install <pageName> --save-dev
保存到生產依賴(dependencies): npm install <pageName> --save
"開發(fā)依賴"顧名思義在開發(fā)環(huán)境中用到的依賴透典,"生產依賴"在生產環(huán)境中用到的依賴晴楔。那么這里又延伸出個問題什么是開發(fā)環(huán)境顿苇、什么是生產環(huán)境?
1滥崩、開發(fā)環(huán)境和生產環(huán)境
【開發(fā)環(huán)境】:指的是你的項目尚且在編碼階段時的環(huán)境岖圈。你在代碼可能還有各種console.log()、注釋钙皮、格式化等蜂科。
【生產環(huán)境】:指的是你的項目已經完成編碼,并發(fā)布上線可供用戶瀏覽的階段時的環(huán)境短条。代碼可能經過了壓縮导匣、優(yōu)化等處理。
這些概念其實并沒有一個很明確的定義茸时,接下來我們舉例個場景贡定,將"開發(fā)環(huán)境"、"生產環(huán)境"和上面的"開發(fā)依賴"可都、"生產依賴"聯(lián)系起來就會比較容易理解的了缓待。引入html中。但這有個不方便的地方渠牲,我們每次進行一個項目的時候就得手動復制這個jQuery文件到我們的項目中旋炒,如果想要換個版本又得官網上下載、隨著項目越來越多签杈。用到的插件瘫镇、庫也隨之越繁雜...這樣會造成自家用的插件管理繁瑣的問題。因此就出現(xiàn)了npm(包管理工具)你需要用到什么答姥,直接通過一條命令行就可以將想要的插件下載下來铣除,并直接引入到項目中,目前幾乎所有的js插件都能在npm上直接下載鹦付。
2尚粘、生產依賴
回到環(huán)境和依賴話題,我們下載的jQuery睁壁,在開發(fā)時參與源碼編寫背苦,在發(fā)布上線的生產環(huán)境中也是需要它的。不僅在開發(fā)環(huán)境編寫代碼時要依賴它潘明、線上環(huán)境也要依賴它行剂,因此將它歸類為"生產依賴"。
安裝時執(zhí)行npm install jquery --save钳降,它就會被記錄在package.json的dependencies厚宰。
當進行代碼打包時,會將這里的jQuery打包入我們的項目代碼中。
3铲觉、開發(fā)依賴
接著澈蝙,假如我們用gulp對html進行壓縮,我們通常會用到一個插件gulp-htmlmin撵幽。我們只希望它把html壓縮完就ok了灯荧,并不希望它融入我們的項目代碼中,即只存在于開發(fā)環(huán)境盐杂,因此把他歸類為"開發(fā)依賴"迂卢。
安裝時執(zhí)行npm install gulp-htmlmin --save-dev它就會被記錄在package.json的devependencies下性含。
當進行代碼打包時,不會將這里的gulp-htmlmin插件源碼打包入我們的項目代碼中喳篇。
四螃壤、本地安裝和生產依賴的區(qū)別(有疑問)
本地安裝時將模塊寫入package.json中:
[npm install xxx]安裝但不寫入package.json片林;
[npm install xxx --save] 安裝并寫入package.json的"dependencies"中
[npm install xxx --save-dev]安裝并寫入package.json的"devDependencies"中