2016-04-29 124 views
-1

我正在學習Node,但仍然不明白爲什麼我應該使用(或不應該?)鍵--save--save-dev事件後讀https://docs.npmjs.com/cli/installNPM安裝 - 保存密鑰

好吧,我明白有package.json之後出現npm init。我真的需要這個文件嗎?

接下來,在這個文件中有幾個部分,如dependenciesdependenciesDev。我明白,最後一個指定僅在開發應用程序時使用的模塊。但爲什麼我應該添加一些東西到dependencies部分?例如,我想使用react-loopback,但是在指定的文檔中,應該在不保存相關性的情況下安裝它(即,沒有--save密鑰,只需npm install react-loopback)。爲什麼?

最後:我應該如何決定保存在package.json什麼 - 不保存?

+2

您可以使用package.json指定項目的所有依賴關係,而無需在您的代碼庫中實際提供它們。這在使用版本控制時非常有用,例如git或svn,因爲那樣你就不必將它們添加到你的倉庫。克隆你的項目的每個人都必須執行「npm install」,並且應該很好。 – puelo

+0

@puelo明白了。但爲什麼有些軟件包說它應該在不保存'dependencies'的情況下安裝?文檔寫入時錯過了這一點?或故意省略? –

+1

在文檔中不提及'--save'的原因可能是他們認爲開發人員自己知道它。 – puelo

回答

1

--save適用於您的nodejs依賴關係,用作應用程序的一部分,--save-dev用於加載不屬於應用程序但在開發時需要的開發依賴關係。

這些一個很好的例子是express包,因爲它需要爲應用程序的一部分的應用程序dependecy而gulp/ grunt包,因爲它需要對應用程序的開發和建設,但一個開發的依賴並不像你的應用程序的一部分

0

當運行npm install --save--save-dev

  • NPM將保存NPM包的副本./node_modules/目錄內
  • NPM會寫故宮PAC kage名稱和版本package.json
  • 當您的節點應用程序需要/導入該代碼中的模塊時,它將使用./node_modules/中的副本。否則它會繼續在父目錄中查看。

npm install --save

運行npm install --save當它是你需要在運行時爲您的節點應用一個NPM包。 這將是有用的,當有一些像Heroku這樣的部署平臺,將只安裝依賴關係列在package.json。在這種情況下,您將不得不發送到Heroku已經預建的包,因爲它不會安裝devDependencies

例如。快遞,要求,伐木工人


npm install --save-dev

運行npm install --save-dev的包,你將在你的客戶的捆綁,你需要運行單元測試等JavaScript文件或工具的構建只使用

例如。 React,eslint,mocha,babel

+0

感謝您澄清,我只是對你在devDependencies之間提到React有點混淆。如果未在'dependencies'中指定它,那麼一旦部署到Heroku的應用程序將不可用。你能澄清一下你的意思嗎? –

+0

它將在您的** bundle.js **中可用,因爲瀏覽器不使用node_modules。瀏覽器使用bundle.js,其中包含您的單頁應用程序所需的所有npm包。 如果您使用React在服務器端進行渲染,那麼您確實需要在*依賴關係中包含React,因爲它將被您的節點應用程序使用 – cuadraman