【发布时间】:2012-03-02 19:56:41
【问题描述】:
我在遵循“官方”建议将所有外部依赖项签入 git 时遇到问题(文章 http://www.mikealrogers.com/posts/nodemodules-in-git.html 链接来自常见问题解答)
如何确保不仅签入顶级依赖项?大多数 npm 模块目前不遵循建议。他们都有自己的 node_modules 在 .gitignore 。只是删除他们的 .gitignore 似乎有风险。
对于已编译的模块,本文建议仅签入源代码并运行“npm rebuild”和部署时间。不幸的是,'npm rebuild' 并没有对所有模块进行'clean make'(尽管我正在使用的 npm 版本 1.0.106 中包含错误修复 https://github.com/isaacs/npm/issues/1872)。这意味着我必须防止编译目标被签入(否则我将在生产机器上为开发人员机器编译目标代码,而不会被 npm rebuild 覆盖)。但是:我该怎么做?不幸的是,这些模块没有通用的编译输出目录,所以只需 git 忽略“node_modules//build”和“/node_modules//out/”(正如这篇好文章 eng.yammer 中所述.com/blog/2012/1/4/managing-nodejs-dependencies-and-deployments-at-yammer.html 并非在所有情况下都有帮助。
短版:您如何确保生产服务器使用与您在开发期间使用的所有依赖模块完全相同的版本?
【问题讨论】:
-
我在stackoverflow.com/questions/11351784/npm-clean-modules/… 上发布了一个脚本,这可能会有所帮助。