我怎样才能让WebStorm向我展示凉亭包的清单?

时间:2015-12-10 15:21:52

标签: node.js npm bower webstorm

早上好。

我的设置:

  • OSX El Capitan 10.11.2
  • JetBrains WebStorm 11.0.2
  • Node.js 4.2.3
  • NPM版本2.14.7
  • Bower 1.7.0

Npm的前缀~/.npm-global

我的可执行路径设置为:$PATH = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mike/.npm-global/bin

从命令行运行bower search [package] --json会返回结果。

我的日志中的相关行(当Webstorm运行搜索时)如下所示:

2015-12-10 10:11:20,252 [1087432] INFO - ipt.bower.BowerCommandLineUtil - Running bower command: /usr/local/bin/node /Users/mike/.npm-global/bin/bower search --json 2015-12-10 10:11:20,739 [1087919] WARN - .BowerAvailablePackagesManager - [parse all bower packages] Top-level element should be object, but BEGIN_OBJECT found.

我注意到bower search --json(就像Webstorm那样,没有指定包)将bower使用信息作为json对象返回,这很有趣,而且我相信这是问题所在。 Webstorm论坛上没有相关问题。

这实际上是从'IDE'中取出'I'。

任何人都可以提供解决方案吗?

Here's what I'm seeing (or not seeing).

更新:我的原始假设是正确的,但我没有足够的专业知识和时间来妥善解决问题。我的解决方法如下所示。 Bower的search命令应该在没有参数的情况下运行,但是当Webstorm调用bower search --json时,该命令被解释为不正确并将搜索用法作为json对象返回。傻东西。希望这有助于其他人。

2 个答案:

答案 0 :(得分:1)

问题是由Bower最近的变化引起的(https://github.com/eppeters/bower/commit/5a1e5eb9c717b4210d6a4af77eca1951bdd9f288);它现在需要传递给search命令的模块名称(尽管文档尚未相应更新)。 相关的JetBrains门票:WEB-19389;已修复,修复将在下次更新中提供

答案 1 :(得分:0)

这是一个严格修复,只要头上留有任何头发,就不适合使用:

[npm prefix]/bin/lib/node_modules/bower/lib/util/cli.js

我添加了以下内容来拦截命令行选项并强制使用空搜索模式:

function readOptions() {

    ...

    noptOptions = nopt(types, shorthands, argv);

    ...

    // ADDED THE FOLLOWING

    if (noptOptions.argv.original.length == 2 && noptOptions.argv.original[0] == 'search' && noptOptions.argv.original[1] == '--json') {
    noptOptions.argv = {
        remain: ['search', ''],
        cooked: ['search', '', '--json'],
        original: ['search', '', '--json']
    };

    //////////////////////

    ...
}