gruntjs 模块必须安装在项目目录下么

发布于 2022-08-29 19:42:32 字数 147 浏览 16 评论 0

也就是和package.json处于同一级别的目录下。

我想装在某个根目录下,这样就可以在各个项目目录中调用根目录的安装模块来执行任务了,省的每个项目目录去安装。

但是,这个想法,我实践了,证明是不行的。

不知道有没有解决办法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

指尖上得阳光 2022-09-05 19:42:32

在这么做之前你需要知道

  1. grunt的module必须在gruntfile的相对路径中 即使模块安装在global中 grunt也不会去加载
  2. 这么做违反了node模块管理的一般模式
    http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/
    > 1.项目调用的模块 应当安装在项目目录内
    > 2.安装在全局的模块 应当是全局使用的命令行工具 比如 grunt-cli

如果你依然想这么做 我能想到的是以下两个方法

1.使用 npm link
全局安装所需模块 在各个项目中使用 npm link 命令创建符号链接 然后和通常的方式是用grunt
但是 这种方式不利于项目迁移
假设你要在另一台机器上开发 正确的方式下 只要npm install 安装所需模块 grunt就能开工
npm link 只能自己写脚本

2.使用独立的 gruntfile 或者 grunt task
为每个项目单独写 gruntfile 在 gruntfile的目录中安装 grunt module
通过 grunt --gruntfile <filename> 执行任务
或者
在单个gruntfile里 对不同项目分别写task
通过 grunt <taskname> 执行任务

想想都麻烦 你确定要这么搞?

半衬遮猫 2022-09-05 19:42:32

其实最开始grunt就是你说的那样子的

后来人们发现这样不行:不同项目用的grunt api版本不同,grunt又没到stable的阶段无法保证向下兼容,全局装一个grunt结果一团糟,人们根本没法用新的api(因为更多人装的是老版本,不可能一夜之间让所有项目的gruntfile重写)。所以大概是在0.4.0的时候就改为强制每个项目单独装了,实践证明这是个好方法:老项目可以继续用老版本的grunt一直用下去,新项目可以大胆用最新的版本,互相之间不会冲突

嗯,换句话说,“这是feature,不是bug”

风蛊 2022-09-05 19:42:32

用 npm install xxxx -g 就可以安装在全局目录下,这样就不用在每个项目中单独安装,其实还是建议你单独安装,这样版本更好管理,其实你只要本地安装过某个模块,下次在其他项目安装的时候会使用缓存的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文