前端 - gruntjs 模块必须安装在项目目录下么
大家讲道理
大家讲道理 2017-04-17 11:18:30
0
3
204

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

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

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

不知道有没有解决办法?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(3)
PHPzhong

在这么做之前你需要知道

  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> 执行任务

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

小葫芦

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

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

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

伊谢尔伦

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!