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