Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
我该如何处理Grunt';当我将我的项目发布到GitHub时,是否在s node_modules目录下?_Git_Gruntjs - Fatal编程技术网

我该如何处理Grunt';当我将我的项目发布到GitHub时,是否在s node_modules目录下?

我该如何处理Grunt';当我将我的项目发布到GitHub时,是否在s node_modules目录下?,git,gruntjs,Git,Gruntjs,这是我第一个使用Grunt和Git的项目。在我的项目中,我有通过命令“npm install grunt”创建的“*node\u modules*”目录。现在我想将我的项目发布到GitHub 我的项目应该包含“node_modules”还是应该省略它?我担心这会让不熟悉Grunt的开发人员感到害怕。事实上,我不明白为什么要为每个项目分别安装grunt。为什么不可能在全球范围内安装 这是我的安装:grunt contrib concat、grunt contrib jshint、grunt con

这是我第一个使用Grunt和Git的项目。在我的项目中,我有通过命令“npm install grunt”创建的“*node\u modules*”目录。现在我想将我的项目发布到GitHub

我的项目应该包含“node_modules”还是应该省略它?我担心这会让不熟悉Grunt的开发人员感到害怕。事实上,我不明白为什么要为每个项目分别安装grunt。为什么不可能在全球范围内安装


这是我的安装:grunt contrib concat、grunt contrib jshint、grunt contrib qunit、grunt contrib uglify、grunt contrib watch。

您不应该全局安装grunt和grunt插件的原因是,每次只能安装一个版本的grunt和grunt插件。在与团队合作时,这也意味着团队中的每个成员都必须运行相同版本的grunt和每个grunt插件

与团队协调这些版本,并在跳转到不同项目时切换版本是一场噩梦。解决方案是在本地安装所有内容。它只是一个文件空间,大多数模块不会占用很多空间

大多数人不会将他们的
node\u模块
文件夹提交到github中。可以通过在同一文件夹中键入:
npm install
再次安装
package.json中列出的每个依赖项

在安装插件和模块时,使用
npm install grunt--save dev
保存到
包.json

提交
节点单元模块
、IMO的唯一合理理由是使用私有应用程序和准备部署到生产中的repo。您希望确保您的依赖项被锁定,并且在推送时不会破坏某些内容。还有其他策略可以避免提交
node\u模块
,即使使用这种用例(例如npm shrinkwrap)

简言之:

  • 如果你正在部署一个应用程序,并且偏执于锁定你的DEP,提交你的节点模块
  • 除此之外,不要提交节点模块
@“提交节点_模块IMO的唯一合理理由是使用 计划部署到生产中的专用应用程序和回购。”

我从从不将节点_模块提交到repo开始,只提交package.json中的更改。但事实证明,对于一个有多个开发人员和大量实验性功能分支的项目来说,这是一个非常糟糕的主意。由于node_module文件夹没有使用git进行版本控制,您最终需要在每个分支交换机上运行npm install,因为不同版本的模块可能不同。一场真正的噩梦

你最终会听到“这个废话再也不能用了!!”,只是因为有人更新了功能分支中的节点模块。因此,我现在建议为具有多个开发人员和分支的项目包括node_模块。带走了很多痛苦

编辑:只想添加一些其他内容,以记住签入/未签入节点模块,我必须(痛苦地)学习:

  • 始终在package.json中锁定您的版本-这意味着 基本上删除包前面的所有修改器 版本号(如:~、>、*以及任何可能的版本号),如果您有 有人运行npm安装,你想让他们完全得到你所拥有的 (语义版本控制在理论上是很好的,但很抱歉它是 只是不可靠,而且你永远不想更新软件包 在你不知道的情况下)。否则就看着世界燃烧起来 再一次
  • 编辑(2018年2月28日):这不再需要了-就像在新版本和 npm-和纱线包管理器在安装时生成.lock文件- 定义确切安装的软件包版本-可以提交和 由其他开发人员使用

  • 如果在混合操作系统环境中工作,则会出现一些问题- 只应小心签入的包,例如grunt imagemin,它可能会妨碍在windows上使用msysgit签出,因为它们的路径太长
  • 我发现将我的工作流自动化和相应的npm包放入自己的子文件夹/存储库中是最好的做法,以实现可重用性和更好的项目维护,因为这样可以防止自动化模块与实际的nodejs应用程序包混合
    你读过这个吗?:非常好而且全面的答案。非常感谢。谢谢。但是我觉得有点奇怪,你认为人们没有试图将他们的私有应用程序投入生产,这是最常见的用例,对吗
    提交节点_模块IMO的唯一合理理由是使用一个私有应用程序和一个打算部署到生产中的repo。
    因为问题是从
    开始的,这是我第一个使用Grunt和Git的项目。
    我什么都不假设。)