2016-06-10 44 views

回答

1

第一個,看到這個問題的答案,What's the difference between dependencies, devDependencies and peerDependencies

這將解釋噸。

第二個,默認情況下npm將安裝devDependencies,除非兩者中的一個爲真,在這種情況下devDependencies將被跳過。這些東西是:

  1. 你明確地告訴NPM它的生產與npm install --production
  2. 您設置NPM檢查環境變量,NODE_ENVIRONMENT=production

在一般情況下,如果你正在分發到像Heroku的,他們將設置生產標誌,並且您的devDependencies將安裝而不是。因此,只有與--save-dev-D標誌(都做同樣的事情),如果它是一個用於開發的模塊,比如測試/嘲笑/支架/等安裝的東西。

+0

npm還會檢查「NODE_ENV」環境變量 – gargsms

1

--save-dev爲相關性,如單元測試文庫是有用的。應用程序不需要這些依賴關係來運行生產;因此如果你發佈你的軟件包,你的軟件包的用戶將無法在他們的node_modules文件夾中獲得這些開發依賴項。

NPM並不一定知道,你在開發者模式,它只是一個軟件包管理器,允許你將包安裝到你的工作目錄,並從發佈自己的包說目錄。

+0

是什麼意思爲應用程序正在生產的「運行」,如何NPM知道你在生產或開發運行? –

+0

Matthew Bakaitis的回答很好地描述了npm如何不安裝dev依賴關係。您可以使用生產標誌「--production」進行安裝,或者將環境變量NODE_ENVIRONMENT設置爲「生產」 –