在谈到 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%,这似乎在每次构建时重新下载所有包
Step 3/7: NPM Setup (Node.js NPM) (2m:10s)
[npm install] Starting: 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以防止它 checkin 源代码)然后再不 checkin ,除非您启动一个新的本地工作区。
当构建运行时,它需要从命令行运行“npm install”,它会从 package.json 文件中获取依赖项并将它们安装到每次构建工作目录内的子文件夹中,即使文件已经存在于以前的构建中(即 TC 代理尚未清理它们),afaik 你不能将它们安装在工作文件夹之外。
我可能是错的......或者我应该说我希望我错了,并且正在寻找一种方法让 gulp 支持这一点,但无论我们如何让它工作都需要与任务运行器资源管理器一起工作,所以开发者在本地的 F5 体验仍然相同。
是的,我们确实有多个代理。
最佳答案
我不了解 Node.js,但这里有一些针对 TeamCity 的建议:
%TEMP%
?如果是这样,它们将无法在后续 TeamCity 构建之间重复使用,因为 TeamCity 代理劫持了 %TEMP%
。目录(将其重定向到 <TeamCity Home>/buildAgent/temp/buildTmp
)并在每次新构建之前始终完全删除此目录。 (见 buildTmp
here。)
%TEMP%
和其他地方),从而为 TeamCity 留出一些余地。https://stackoverflow.com/questions/32834881/