我们从我们的csproj
文件中调用Gulp,因为我们在此项目中使用Visual Studio 2013:
<Target Name="AfterBuild">
<Exec Command="gulp" />
</Target>
但是,由于我们仍在制作这个新项目,我们经常将gulpfile.js
扩展到包括新的包。开发人员会做例如npm install gulp-util --save-dev
并写了一个新任务,一切都很顺利。
然后开发人员检查gulpfile.js
和packages.json
到我们的VCS。目前:
npm install
;npm install
;必须记住必须手动完成的事情并不是一个很好的选择。有一次,我们在csproj
内的Task
文件中有这个...
<Exec command="npm install" />
......就在gulp
执行官之前,所以开发人员不能“忘记”采取这个手动步骤。但是,每次(重新)构建可能需要一个甚至几秒钟,这很烦人。
有没有更好的方法来解决这个问题?在使用Visual Studio开发大型(ish)团队的项目中,如何处理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
后运行一次。
不幸的是,没有办法只在npm中安装新软件包,但你可以尝试使用npm-fast-install或npm_lazy等工具减少在此步骤中花费的时间。
npm-install-missing结合npm outdated
和npm install
来安装依赖树中所有缺少的依赖项。
您可以将它添加到您的项目中,如下所示:
<Target Name="AfterBuild">
<Exec command="npm-install-missing" />
<Exec Command="gulp" />
</Target>