2016-02-18 73 views
0

我正在試驗gulp來自動創建一個ZIP文件來分發我的PHP項目。我不熟悉npm。在項目中保存gulp插件

我已經意識到我需要幾個插件(gulp-asvn和gulp-zip到目前爲止)。我已經安裝了他們按照官方網站提供,例如指令:

npm install --save-dev gulp-asvn 

我node_modules目錄已經大到實際的代碼庫,是隻是一個內部開發的工具,我不希望犯如果我不需要,它會進入我的Subversion版本庫。

有沒有辦法告訴npm需要哪些軟件包,並有可能一次安裝它們,所以當其他人檢查代碼時,配置環境時沒有太多問題?在PHP的作曲家,你會有一個composer.json文件,但我不確定package.json是否與此相當,而npm install還沒有創建它。

+0

我們使用'npm init'來安裝'package.json',它包含節點模塊運行所需的依賴關係。你可以列出所有在這其中是必需的,然後就執行'NPM install'安裝在'package.json'一次列出的所有依賴關係的依賴關係。 –

+0

@Sumit所有答案都很有用,但你的評論是關鍵。如果您沒有'package.json','--save-dev'參數不起作用。我被'composer require'迷惑了,它會自動創建所有文件。如果您發佈了正確的答案,我會很高興接受它。 –

+0

當然,我會構架答案併發布。請建議編輯來改善它。 –

回答

1

項目依賴存儲在package.json文件中加入,但npm install --save-dev將無法​​創建文件,如果它不存在,或者甚至警告說,它不存在與--save-dev開關會沒有效果。 (在這個意義上說,它的行爲不同於作曲,這只是自動創建其composer.json文件。)

一個項目的最低限度配置,這不是JavaScript庫可以小,因爲這可再分發:

{ 
    "private": true 
} 
+0

很好解釋! –

1

TLDR 如果您的依賴關係在package.json文件中命名,您的罰款。 用戶只需要對npm說安裝即可:npm install

說來話長

說你有你的package.json文件。

現在你做

npm install --save-dev gulp-asvn 

這將安裝gulp-asvn包,並把它添加到package.json文件devDependencies

如果您忽略了已檢查文件中的node_modules,則用戶只需說npm即可安裝所有依賴項,並且您沒有問題。

npm install 

這個命令看起來package.json內,解決所有的依賴和開發的依賴關係,從npm註冊表拉下來,並安裝它們。

+0

我懷疑失蹤位爲NPM init'因爲'--save-dev'不保存任何內容,據我可以告訴。我會檢查並報告回來。 –

+0

'npm init'會創建你的'package.json'文件。您也可以手動創建它。 – MarcoL

1

從作曲家文檔參考 -

這種想法並不新鮮和作曲家的強烈節點的NPM和紅寶石的打捆啓發。

您可以使用此命令來確保忽略node_modules文件夾以提交到svn repo。

svn propedit svn:ignore . 

默認的文本編輯器會彈出,你可以添加node_modules目錄根據您的文件夾結構被忽略。

現在你知道npm'may'可能不會在很長一段時間。爲了安全起見,您可以爲node_modules創建另一個回購。

此外,您還可以將您的依賴關係和開發依賴關係區分開來,並分別保存在您的package.json文件中。

npm install 

P.S. - 以上命令對於其他人配置其環境綽綽有餘。如果不是,您可以使用環境變量來獲取api鍵和其他依賴於環境的常量。

1

節點模塊安裝的文件夾中,如果有文件package.json。 的package.json有許多領域它講述了作者的Git倉庫等

這裏有一個重要的領域,這是dependencies:,基本上列出了需要運行這個項目節點模塊。當運行npm install somePackage --save-dev,它試圖找到package.json,並將其保存在它的依賴性,同時還下載模塊。

您可以通過在依賴

"dependencies": { 
    "gulp-asvn": "^0.4.5", 
    "....." : ".." 
}, 

和運行npm installnpm init,並列出所有節點模塊創建package.json

您還可以通過單獨運行npm install --save-dev gulp-asvn包等保存的依賴關係。它會在你的package.json