Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 检入节点\u模块与包覆面提取_Node.js_Npm - Fatal编程技术网

Node.js 检入节点\u模块与包覆面提取

Node.js 检入节点\u模块与包覆面提取,node.js,npm,Node.js,Npm,检入节点_模块是社区标准,但现在我们还可以选择使用包覆面提取。后者对我来说更有意义,但总有人“强制发布”并引入bug的可能性。还有其他缺点吗?关于这个主题,我最喜欢的帖子/哲学可以追溯到2011年(在node.js land中有很长一段时间): 直接引用: 如果您有一个部署的应用程序,请将所有依赖项检入到node_模块中。如果使用npm do deploy,则仅为这些模块定义BundleDependence。如果您有需要编译的依赖项,您仍然应该签入代码并在部署时运行$npm rebuild 我

检入节点_模块是社区标准,但现在我们还可以选择使用包覆面提取。后者对我来说更有意义,但总有人“强制发布”并引入bug的可能性。还有其他缺点吗?

关于这个主题,我最喜欢的帖子/哲学可以追溯到2011年(在node.js land中有很长一段时间):

直接引用:

如果您有一个部署的应用程序,请将所有依赖项检入到node_模块中。如果使用npm do deploy,则仅为这些模块定义BundleDependence。如果您有需要编译的依赖项,您仍然应该签入代码并在部署时运行$npm rebuild

我告诉过的每个人都告诉我我是个白痴,几周后告诉我我是对的,将node_模块签入git对部署和开发来说是一件好事。客观上,这更好,但以下是我似乎收到的一些问题/抱怨

我认为这仍然是最好的建议

强制发布场景很少见,
npm shrinkwrap
可能适用于大多数人。但是,如果您要部署到生产环境中,没有什么比签入整个
node\u模块
目录更能让您安心的了

或者,如果您确实不想签入
node\u modules
目录,但想更好地保证没有强制推送,我会遵循
npm help shrinkwrap
中的建议:

如果您想避免拜占庭式的作者用破坏应用程序的代码替换您正在使用的包的任何风险,您可以修改包覆面处理文件以使用git URL引用而不是版本号,以便npm始终从git获取所有包


当然,有人可能会运行一个奇怪的
git-rebase
或其他东西,然后修改git-commit散列。。。但现在我们都快疯了。

npm常见问题解答直接回答了这个问题:

  • 将节点_模块检查到git中,查看您部署的内容,例如网站 和应用程序
  • 对于库和模块,不要将节点_模块签入git 打算重复使用
  • 使用npm管理开发人员中的依赖项 环境,但不在部署脚本中

引用到今天,该链接已断开(500个错误),因此这是该帖子的一个(gist.github.com/3854887)。如果作者删除了他们的软件包,这确实会发生,那么收缩包装将无济于事。即使是常见问题解答也可能会改变。它现在写道:“对于您部署的包,例如网站和应用程序,您应该使用npm shrinkwrap来锁定您的完整依赖关系树”。