npm
是Node.js
的包管理工具,它的誕生也極大的促進了前端的發展,在現代前端開發中都離不開npm
的身影。前端
本文是npm系列的第一篇,知識很基礎,做爲一個熱身文章,若是各位已是開發熟練工了,徹底能夠跳過這篇。node
npm 是基於 Node.js,因此咱們須要安裝 Node.js,方式有兩種:webpack
// 查看npm版本 npm -v // 更新npm自身 npm install npm@latest -g
在實際使用中咱們既安裝本地包(項目依賴),也會安裝全局包(命令行工具)。web
可使用下面的命令來安裝一個包:npm
npm install <package_name>
移除包能夠用指令:json
npm uninstall <package_name>
在項目中安裝包時默認會安裝到dependencies
中,咱們能夠經過如下參數來控制這個行爲:gulp
dependencies
中devDependencies
中optionalDependencies
中dependencies
中除此以外還有兩個額外的參數:segmentfault
bundleDependencies
中如需從 package.json 文件中刪除依賴,須要在命令後添加參數:工具
npm uninstall --save lodash // 經過--save-dev安裝的包,移除的時候也需指定爲--save-dev將其卸載 npm uninstall --save-dev webpack
全局安裝通常是用來安裝命令行工具,諸如gulp、http-server,咱們只須要在後面加上-g
,好比:測試
npm install -g http-server
有時候咱們記不清某個包,想查看全部已安裝的包應該用什麼命令呢:
// depth表明遍歷的深度,若是沒有該參數,會把全部包的依賴也顯示 npm list -g --depth 0
項目中安裝依賴後在自動生成package-lock.json
文件,裏面包含安裝的依賴信息,主要是用來鎖定依賴版本,確保團隊之間安裝依賴時不會出現差別。
前面提到dependencies
的概念,那在npm
中都有哪些依賴呢?
這兩個是咱們使用的最多的,也是最須要注意的。
假設咱們有一個插件magic-lint
,它的做用是在提交commit
時檢查以及格式化代碼,那麼裏面至少有prettier
插件用來美化代碼,咱們須要確保其餘用戶安裝magic-lint
以後能正常使用,那就要把prettier
列爲dependencies
。
另外咱們在開發magic-lint
過程是屬於開發環境,咱們會須要jest
來測試,普通用戶安裝時是不須要jest
,咱們把jest
列爲devDependencies
後就能夠避免這樣的狀況。
若是添加--production
標記,或者環境變量NODE_ENV
被設置爲production
, npm就不會安裝devDependencies
中的模塊。
那何時用peerDependencies
呢?
假設咱們有一個webpack-plugin-god
插件,它只是webpack
的插件,並不依賴webpack
,因此在dependencies
或devDependencies
中不會寫明webpack
,但事實上它又是針對特定的webpack
版本開發,這個時候咱們就能夠把webpack
寫入peerDependencies
中。
若是有一個包屬於可與有無的,咱們就能夠把它歸爲optionalDependencies
寫代碼時咱們能夠這樣使用可選包:
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() }
假設咱們有一個package.json
:
{ "name": "awesome-web-framework", "version": "1.0.0", "bundledDependencies": [ "renderized", "super-streams" ] }
經過npm pack
命令咱們能夠獲得文件awesome-web-framework-1.0.0.tgz
,裏面會包含renderized
和super-streams
兩個依賴。
在項目中執行npm install awesome-web-framework-1.0.0.tgz
,結構也會變爲:
├── node_modules ├── awesome-web-framework │ └── renderized │ └── super-streams └── xxx
下一篇將講解 npm install
,看了以後,但願可以讓你驚歎一下:「哇~ 原來還能夠這樣」,我就心滿意足了。
本文同步發表博客: 什麼是npm系列:1、npm簡介