【问题标题】:Is there a minimal version of "npm install grunt"?是否有“npm install grunt”的最小版本?
【发布时间】:2014-12-13 13:30:05
【问题描述】:

在我看来,当我运行 npm install grunt 时,我得到了一个严重污染的项目文件夹。在 node_modules 文件夹中有 rimraf、coffescript 和其他我真的不想使用的库。这些是 grunt 本身能够运行所必需的,还是只是为了我的方便?

我想要某种“npm install grunt --minimal”来仅安装能够使用 grunt 所需的绝对最小值。我真的不喜欢我的项目文件夹里塞满了不是我自己的代码的东西。我用谷歌搜索了我能想到的术语,比如“最小的 grunt 安装”,但只找到了基本的安装教程。

【问题讨论】:

  • 我个人使用--dont-install-at-all-because-i-dont-want-slow-bloated-software-like-grunt 标志,这绝对可以最大限度地减少安装的占用空间。
  • @torazaburo 那么你有什么建议可以满足同样的需求但又不会让我的项目膨胀?
  • make。请参阅algorithms.rdio.com/post/makesitepoint.com/using-gnu-make-front-end-development-build-tool。当然,这属于宗教战争的范畴。
  • 我不明白为什么会有这么多反对票。在过去的几天里,我浪费了很多时间来尝试各种设置。 NPM 安装似乎增加了 100 多兆字节。更重要的是,文件/文件夹长度对于 Windows 来说过长并不罕见。我会喜欢极简主义的版本。我目前对相对较小版本的尝试在我的 node_modules 文件夹中包含超过 86 千个文件。 (packages.json 中有 26 个依赖,其中 20 个是 dev only,其中大约 15 个是 gulp 相关的。(而不是 grunt 对应的,只是因为我更熟悉 gulp))

标签: javascript node.js gruntjs


【解决方案1】:

在项目目录上方的目录中创建一个node_modules 目录并在那里执行npm install grunt。这样可以访问模块,但它们不在项目的 node_modules 目录中。

另一种选择是使用npm install -g grunt 全局安装 grunt。

【讨论】:

  • 但是您没有质疑问题的前提,这正是拥有繁忙的node_modules 目录的问题所在,按照您的建议将其上移一级有什么好处?
【解决方案2】:

不,你不能。 Grunt 是 npm 包,它有依赖项(这是正常的)。事实上,这种依赖关系不会污染您的项目文件夹结构。这是正常的

  • 将 node_modules 添加到 .gitignore 并且不要提交

  • 使用--save 标志安装每个npm 包(将包写入package.json)或--save-dev 标志(将包写入package.json 作为开发所需的包)

  • 将 package.json 提交到存储库。因此,每个团队成员都可以通过npm installnpm install --production 安装所有包

正如 Dan 所说,您可以使用 -g 标志全局安装 grunt 但这不会解决您的问题,因为您安装的每个 npm 包都有自己的依赖项(您可能会认为它也会污染您的文件夹结构)

您知道,开发(或生产)需要很多东西。在安装 apache(或其他东西)时,您不会说这会污染您的文件系统(但它有自己的文件夹等)。

如果项目存储库中不存在文件结构,则它们不会污染文件结构。

【讨论】:

  • 有意义:将 node_modules 添加到 .gitignore 并且不要提交它。谢谢!
【解决方案3】:

使用pnpm

pnpm 创建你想要的“深度”node_modules

还可以节省磁盘空间和网络流量:)

替代:npm install --legacy-bundling
产生一个深层的node_modules

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2012-12-31
    • 2014-06-09
    • 2020-04-06
    相关资源
    最近更新 更多