2017-06-25 228 views
1

我即將編寫一個yeoman生成器,其中整個模板託管在git存儲庫上。所以,我的自耕農發電機的package.json看起來像package.json:只需下載依賴項,但不要安裝它

{ 
    "name": "generator-foo", 
    "version": "0.1.0", 
    "description": "", 
    "files": [ 
    "generators" 
    ], 
    "keywords": [ 
    "yeoman-generator" 
    ], 
    "dependencies": { 
    "foo-template": "git://somewhere-in-the-world/foo-template.git#0.1.0", 
    "chalk": "^1.1.3", 
    "yeoman-generator": "^1.1.1", 
    "yosay": "^2.0.0" 
    } 
} 

有什麼辦法來防止npm install從安裝foo-template包,即在運行任何安裝後腳本只是這個包?相反,它應該只被下載到node_modules

+0

你是什麼意思安裝?就像調用後安裝鉤子一樣? – jsalonen

+0

[npm:禁用安裝包後的安裝後腳本]可能的重複(https://stackoverflow.com/questions/23505318/npm-disable-postinstall-script-while-install-package) – jsalonen

+0

不,它們不是重複的題。在這兩個問題中,都要求禁用所有安裝後腳本。我想要的是防止在foo-template中運行postinstall腳本,但是在所有其他軟件包中運行。 –

回答

1

As describe here,使用--ignore-scripts標誌可以全局禁用安裝後腳本。

作爲一個完整的解決方案,我將你的顯式依賴於foo-template與忽略腳本本地安裝後段啓用:

{ 
    "name": "generator-foo", 
    ... 
    "postinstall": "npm install --ignore-scripts git://somewhere-in-the-world/foo-template.git#0.1.0", 
    "peerDependencies": { 
    "foo-template": "git://somewhere-in-the-world/foo-template.git#0.1.0" 
    } 
} 

請注意,以確保依賴性明確說明,我們應該將其標記爲peerDependency(例如防止在prune上刪除軟件包)。

相關問題