检查node_module是社区标准,但现在我们还可以选择使用shrinkwrap.后者对我来说更有意义,但总有可能有人"强制发布"并引入了一个错误.还有其他缺点吗?
smi*_*lay 15
关于这个主题,我最喜欢的帖子/哲学一直追溯到2011年(在node.js土地上很长一段时间):
https://web.archive.org/web/20150116024411/http://www.futurealoof.com/posts/nodemodules-in-git.html
直接引用:
如果您有要部署的应用程序,请将所有依赖项签入到node_modules中.如果使用npm do deploy,则仅为这些模块定义bundleDependencies.如果您有需要编译的依赖项,您仍应检入代码并在部署时运行$ npm rebuild.
我告诉过的每个人都告诉我,我是一个白痴,然后几周后告诉我我是对的,检查node_modules到git一直是部署和开发的祝福.它客观上更好,但这里有一些我似乎得到的问题/抱怨.
我认为这仍然是最好的建议.
强制发布场景很少见,npm shrinkwrap
可能适用于大多数人.但是,如果您正在部署到生产环境,那么没有什么能让您高枕无忧,就像检查整个node_modules
目录一样.
或者,如果你真的,真的不想检查node_modules
目录但想要更好的保证没有强制推送,我会遵循以下建议npm help shrinkwrap
:
如果您想避免拜占庭作者用破坏您的应用程序的代码替换您正在使用的包的任何风险,您可以修改shrinkwrap文件以使用git URL引用而不是版本号,以便npm始终从git获取所有包.
当然,有人可能会运行一个奇怪的git rebase
东西并修改一个git commit hash ...但现在我们只是变得疯狂.