配置Grunt-Bower-Install路径以便于引入组件。

3
如何指定默认文件以便grunt-bower-install正确注入bower组件?我正在使用datejs,根据本地化不同有不同的文件。我想要包含的文件不在bower_components/datejs目录的根目录中,所以我会得到以下错误信息:“datejs未被注入您的文件。请查看“app/bower_components/datejs”中需要的文件,然后手动将其包含在您的文件中。” 我正在尽力避免将datejs硬编码到我的索引文件中,并且也不想将“date-en-US.js”文件移动到datejs目录的根目录中。这是datejs bower组件的结构。
bower_components
└── datejs
    └── build
        └── ...
        └── date-en-US.js
        └── ...
    └── src
    └── test

如果有帮助的话,这是位于datejs bower组件路径中的.bower.json文件:

{
  "name": "datejs",
  "homepage": "https://github.com/datejs/Datejs",
  "_release": "7bdddb55d6",
  "_resolution": {
    "type": "branch",
    "branch": "master",
    "commit": "7bdddb55d69719e42c358c3a2b7df706ff3090f8"
  },
  "_source": "git://github.com/datejs/Datejs.git",
  "_target": "*",
  "_originalSource": "datejs",
  "_direct": true
}
3个回答

7

虽然有点晚了,但是你可以覆盖仓库的主要属性,定义你想要注入应用程序的任何文件。为此,你需要在你的bower.json中使用overrides属性。

试试这个:

{
  "name": "name",
  "version": "x.x.x",
  "dependencies": {
    "datejs": "x.x.x"
  },
  "overrides": {
    "datejs": {
      "main": "build/date-en-US.js"
    }
  }
}

确实如此!并且可以从wiredepgrunt-wiredep中获得更多解释。谢谢@nknj - pgu

3
我也曾经几次因此感到沮丧。在我的情况中,我发现“grunt bower-install”需要.bower.json中的“main”条目。它是一个字符串或字符串数组,指向应安装的相关JS和/或CSS文件。

在您的情况下,我没有看到“main”,建议您创建一个包含所需datejs文件的“main”。如果您打算使用grunt进行缩小等操作,则建议使用源文件。您可以查看其他成功的组件以查看“main”条目的示例。

我怀疑有些组件不提供该条目,因为它们没有单一的使用模式(即,您可以混合和匹配所需的文件),但这只是我推测。


谢谢!我有一种感觉就是这样。但是,如果我将来更新我的 bower 组件,会发生什么?那么 .bower.json 文件中的更改不会被覆盖吗? - adam8810
1
我很惭愧地承认,我可能比你想象的还要菜鸟。如果更有资格的专家看到并发表评论,我会更新我的回答。我还没有测试过更新用例。为了保护自己,我强制将 .bower.json 文件放入我的源代码控制中,这至少可以使任何更新可见。在某些情况下,我向开发人员提出了 Github 问题,因为我认为他们可以自行更改。然而,“main”可能是许多文件或文件组合之一的用例似乎未被 Bower 服务。然而,我不足以对此进行投诉。 - corporatedrone
@corporatedrone已经单独回答了这个问题。 - nknj

1

尝试在你的 grunt 文件中添加以下内容:

'bower-install': {
     fileTypes: {
         fileExtension: {
             detect: {
                 typeOfBowerFile: /-en-US.js/
             }
         }
    }
}

我没有尝试过这个,我的正则表达式可能有误。但根据 grunt-bower-install readme,它指出:查看更多自定义选项,请参阅 [wiredep](https://github.com/stephenplusplus/wiredep) 的 readme,并在那里展示了使用上述配置的方法。
本质上来说 - grunt-bower-install 不知道要查找什么。这个选项似乎告诉它那些信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接