visual-studio - 仅在需要时和/或部分运行npm install

标签 visual-studio msbuild npm gulp

当我们为该项目使用Visual Studio 2013时,我们从csproj文件中调用Gulp:

<Target Name="AfterBuild">
  <Exec Command="gulp" />
</Target>

但是,由于我们仍在设计这个新项目,因此我们经常将gulpfile.js扩展为包括新软件包。开发人员将执行例如npm install gulp-util --save-dev并编写一个新任务,一切都很好。

然后,开发人员将gulpfile.jspackages.json checkin 我们的VCS。目前:
  • Teamcity有一个额外的构建步骤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.jsonnode_modules/.install-stamp更新时运行,并且在npm install成功后会触摸该文件。这样npm install在每次更改package.json后仅运行一次。

    关于visual-studio - 仅在需要时和/或部分运行npm install,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35435041/

    相关文章:

    msbuild - 使用 msbuild 4.0 时错误版本的 aspnetcompiler

    msbuild - TFS/MSBuild 添加 ChangeSet 编号到 Web.Config

    reactjs - React 和 React-Dom 版本应该匹配吗?

    node.js - Meteor - rxjs@5.0.0-beta.11 或 rxjs@5.0.0-beta.6 未满足的依赖项

    visual-studio - VSPackage:在运行时修改工具栏按钮文本/工具提示

    c# - msmq 错误 "the following errors must be resolved"

    typescript - 尽管从 nuget 安装,msbuild + Visual Studio 仍执行错误的 TypeScript 版本

    node.js - 无法将 npm 包发布到 GitHub 包

    c++ - 我想使用 64 位整数可以采用的完整范围。我如何在 x86 Visual Studio 2008 中执行此操作?

    visual-studio - 安装 WDK VC++ 后坏了