gruntjs 模块必须安装在项目目录下么
也就是和package.json处于同一级别的目录下。
我想装在某个根目录下,这样就可以在各个项目目录中调用根目录的安装模块来执行任务了,省的每个项目目录去安装。
但是,这个想法,我实践了,证明是不行的。
不知道有没有解决办法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在这么做之前你需要知道
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 就可以安装在全局目录下,这样就不用在每个项目中单独安装,其实还是建议你单独安装,这样版本更好管理,其实你只要本地安装过某个模块,下次在其他项目安装的时候会使用缓存的。