当我们为该项目使用Visual Studio 2013时,我们从csproj
文件中调用Gulp:
<Target Name="AfterBuild">
<Exec Command="gulp" />
</Target>
但是,由于我们仍在设计这个新项目,因此我们经常将
gulpfile.js
扩展为包括新软件包。开发人员将执行例如npm install gulp-util --save-dev
并编写一个新任务,一切都很好。然后,开发人员将
gulpfile.js
和packages.json
checkin 我们的VCS。目前:npm install
; npm install
。 必须记住必须手动完成的事情并不是一个好地方。有一点我们在
csproj
内的Task
文件中有了它…… <Exec command="npm install" />
...就在
gulp
执行程序之前,因此开发人员无法“忘记”采取此手动步骤。但是,这在每个(重新)构建上可能花费一秒钟甚至几秒钟,这很烦人。有没有更好的方法来解决这个问题?在大型(ish)团队使用Visual Studio开发的项目中,如何处理
packages.json
的更新?
最佳答案
对我有用的方法是将MSBuild incremental build support与图章文件结合使用:
<PropertyGroup>
<!-- File with mtime of last successful npm install -->
<NpmInstallStampFile>node_modules/.install-stamp</NpmInstallStampFile>
</PropertyGroup>
<Target Name="NpmInstall"
BeforeTargets="BeforeBuild"
Inputs="package.json"
Outputs="$(NpmInstallStampFile)">
<Exec Command="npm install" />
<Touch Files="$(NpmInstallStampFile)" AlwaysCreate="true" />
</Target>
NpmInstall
Target
仅在package.json
比node_modules/.install-stamp
更新时运行,并且在npm install
成功后会触摸该文件。这样npm install
在每次更改package.json
后仅运行一次。
关于visual-studio - 仅在需要时和/或部分运行npm install,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35435041/