npm节点模块中的对等依赖问题

时间:2016-04-20 19:43:53

标签: node.js npm gruntjs node-modules

我在为项目安装grunt相关节点模块依赖项时遇到了一些问题,

我想使用一个命令安装所选的依赖项,因此我在下面使用了

npm install grunt grunt-contrib-jshint grunt-cli grunt-contrib-watch grunt-exec grunt-contrib-symlink grunt-contrib-clean grunt-contrib-copy grunt-text-replace grunt-git --save-dev

得到错误,例如' grunt-exec@0.4.6需要grunt@~0.4的同行,但没有安装。' 因此,根据谷歌搜索的反馈,发现我们可以硬编码依赖版本,如下面的修复,

npm install grunt@~0.4  grunt-contrib-jshint grunt-cli grunt-contrib-watch grunt-exec grunt-contrib-symlink grunt-contrib-clean grunt-contrib-copy grunt-text-replace grunt-git --save-dev

它已经暂时解决了这个问题,但现在我收到了类似的错误 ' grunt-git@1.0.0需要grunt@~1.0.1的同行,但没有安装。'

所以似乎grunt插件需要不同版本的相同依赖 - grunt(在我的例子中)。逐个安装插件而不是群集也不会解决问题

4 个答案:

答案 0 :(得分:2)

<强>更新

由于人们希望在没有阅读评论的情况下从这个答案中拿走分数,看看找到了解决方案,这就是我们到达的地方:

像这样的实例,您应该查看以前发布的grunt-git版本,找到符合您的请求(v0.3.8)的旧版本,并仔细检查您要使用该插件的功能是否可用或不。如果是,请尝试npm install grunt-git@0.3.8 --save-dev。可以找到版本here

原始解决方案

首先,您要通过运行命令package.json创建npm init文件来初始化项目。系统会提示您回答几个问题,如果愿意,可以更改默认值。

项目初始化后,一次安装一个依赖项&amp;包含标记--save--save-dev。这会将依赖项添加到package.json清单中。示例:npm install grunt-contrib-jshint --save-dev

一旦在package.json文件中列出了所有依赖项,就可以使用npm install实现单命令安装。

如果您想了解更多内容,NPM注册管理机构very detailed article使用package.json

答案 1 :(得分:0)

使用全局标志

安装grunt
npm install -g grunt

答案 2 :(得分:0)

我已使用来自该协议的建议解决了我的问题。

只有最新版本的grunt-git(1.0.0)存在依赖性问题,因此我安装的是之前版本0.3.7,它不需要特定版本的grunt。

npm install grunt@0.4.5  grunt-contrib-jshint grunt-cli grunt-contrib-watch grunt-exec grunt-contrib-symlink grunt-contrib-clean grunt-contrib-copy grunt-text-replace grunt-git@0.3.7 --save-dev

答案 3 :(得分:0)

我在尝试安装grunt-exec时遇到了类似的问题。

npm ERR! peerinvalid The package grunt@1.0.1 does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer grunt-exec@0.4.6 wants grunt@~0.4

从这个帖子中的一些线索我把它修好了......

npm uninstall grunt

在我的项目的根文件夹中,我编辑了package.json以从devDependencies中删除grunt。

我已经在全球范围内安装了grunt,所以在项目中也不需要它。

正在运行

  

npm install -D grunt-exec

第二次为我工作,我更新的devDependencies现在看起来像这样:

  "devDependencies": {
    "chai": "^3.5.0",
    "grunt": "^0.4.5",
    "grunt-contrib-clean": ">0.4.0",
    "grunt-contrib-concat": "^1.0.0",
    "grunt-contrib-jshint": "~1.0.0",
    "grunt-contrib-uglify": "^1.0.1",
    "grunt-exec": "^0.4.6",
    "grunt-mocha-test": "^0.12.7",
    "mocha": "^2.4.5"
  },

新行是grunt和grunt-exec。

到目前为止,我的项目与添加grunt-exec之前的工作方式相同。看起来我只是找到了降级到早期版本的grunt的简单方法。

这是来自全球安装的版本信息:

>grunt -V
grunt-cli v1.2.0
grunt v0.4.5

希望这有帮助。