这是我使用Grunt和Git的第一个项目。在我的项目中,我有'* node_modules *'目录,我是通过命令'npm install grunt'创建的。现在我想将我的项目发布到GitHub。
我的项目应该包含'node_modules'还是我应该省略它?我担心这会让那些不熟悉Grunt的开发人员感到害怕。事实上,我很困惑为什么你应该分别为每个项目安装grunt。为什么不可能在全球安装它?
这是我的安装:grunt-contrib-concat,grunt-contrib-jshint,grunt-contrib-qunit,grunt-contrib-uglify,grunt-contrib-watch。
你不应该全局安装grunt和grunt插件的原因是因为那样你一次只能安装1个版本。在与团队合作时,这也意味着团队中的每个成员都必须运行相同版本的grunt和每个grunt插件。
当你跳转到不同的项目时,与团队协调这些版本并切换版本是一场噩梦。解决方案,在本地安装一切。它只是文件空间,大多数模块不占用大量空间。
大多数人不会将他们的node_modules
文件夹提交到github。通过在同一文件夹中键入:package.json
,可以再次安装npm install
中列出的每个依赖项。
在安装插件和模块时,使用npm install grunt --save-dev
保存到package.json
。
承诺node_modules
(IMO)的唯一合理理由是私人应用程序和回购打算部署到生产。在哪里你想确定你的依赖关系被锁定而不是在推送时破坏某些东西。还有其他策略可以避免提交node_modules
,即使使用这个用例(例如npm shrinkwrap)。
简而言之:
@“提交node_modules,IMO的唯一合理理由是私有应用程序和repo打算部署到生产中。”
我开始时从不将node_modules提交到repo中,只提交package.json中的更改。但事实证明,对于一个拥有多个开发人员和一些实验性功能分支的项目来说,这是一个非常糟糕的主意。由于node_module文件夹未使用git进行版本控制,因此最终需要在每个分支交换机上运行npm install,因为模块之间的版本可能不同。一场真正的噩梦...
你最终会听到“这个废话再次无效!!”,只是因为有人更新了功能分支中的节点模块。所以我现在建议为包含多个开发人员和分支的项目添加node_modules。带走了很多痛苦......
编辑:只是想添加一些其他的东西要记住签入/未签入的节点模块我必须(痛苦地)学习:
编辑(28.02.2018):这不再需要 - 因为在新版本中,npm-和yarn-package管理器在安装时生成.lock文件 - 定义确切安装的软件包版本 - 可以提交和使用其他开发者。