【发布时间】:2015-12-26 09:31:41
【问题描述】:
在谈到 nodejs npm 时,我有点不习惯,但由于使用几篇文章中推荐的步骤在我们的构建环境中实现它,它使我们的构建时间增加了两倍。
我们将它用于标准的东西(minify/concat/etc js/css/etc)
我们使用 TeamCity 并添加了一个 Node.js NPM 步骤,然后是一个 gulp 步骤来运行任务(RE:https://github.com/jonnyzzz/TeamCity.Node)
设置 NPM 的任务耗时最多,2 分 10 秒,超过调用“npm install”命令的总构建时间的 65%,这似乎在每次构建时重新下载所有包
步骤 3/7:NPM 设置(Node.js NPM)(2m:10s)
[npm install] 开始:cmd /c npm install
之前的总构建时间约为 1 分 30 秒,包括单元测试。
是否可以在本地缓存这些内容并防止每次构建时重新下载?在用户配置文件中或可能与构建文件夹相反的东西中?
更多细节..
这可能最好地解释了设置http://www.dotnetcurry.com/visualstudio/1096/using-grunt-gulp-bower-visual-studio-2013-2015
我们有 C# 项目正在使用新的 Task Runner Explorer,依赖项被保存到 package.json 中,您在工作区的本地环境中预先运行“npm install”一次(需要使用 .tfignore以防止它签入源),然后再不签入,除非您启动一个新的本地工作区。
当构建运行时,它需要从命令行运行“npm install”,它会从 package.json 文件中获取依赖项并将它们安装到每次构建工作目录内的子文件夹中,即使文件已经存在于以前的版本中(即 TC 代理尚未清理它们),afaik 你不能将它们安装在工作文件夹之外。
我可能是错的......或者我应该说我希望我错了,并且正在寻找一种方法让 gulp 支持这一点,但无论我们如何让它工作都需要与任务运行器资源管理器一起工作,所以开发者在本地的 F5 体验仍然相同。
是的,我们确实有多个代理。
【问题讨论】:
-
你有没有为这个问题想出一个可接受的解决方案?
标签: node.js build npm teamcity