生产环境中加载Bower的devDependencies?

8

简短版

我的项目需要使用angular-leaflet,而angular-leaflet有一个长列表的devDependencies,包括jQuery 2。我不想用jQuery 2,我想用jQuery 1.x。如何让bower忽略angular-leaflet的devDependencies并让我使用jQuery 1呢?

详细版

我正在使用bower 1.2.8。这是一个最小的bower.json文件,可以重现我的问题:

{
  "name": "bower-test",
  "dependencies": {
    "jquery": "1.x",
    "angular": "1.2.x",
    "angular-leaflet": "0.7.x"
  }
}

运行 bower install 会导致以下错误:
Unable to find a suitable version for jquery, please choose one:
    1) jquery#1.x which resolved to 1.11.0 and has bower-test as dependants
    2) jquery#2.1.0 which resolved to 2.1.0 and has angular-leaflet#0.7.5 as dependants
    3) jquery#>= 1.9.0 which resolved to 2.1.0 and has bootstrap#3.0.3 as dependants

至少我期望bower install --production会忽略angular-leaflet中的devDependencies。但是这是结果(与上述相同):
Unable to find a suitable version for jquery, please choose one:
    1) jquery#1.x which resolved to 1.11.0 and has bower-test as dependants
    2) jquery#2.1.0 which resolved to 2.1.0 and has angular-leaflet#0.7.5 as dependants
    3) jquery#>= 1.9.0 which resolved to 2.1.0 and has bootstrap#3.0.3 as dependants

为什么Bower不能忽略angular-leaflet的devDependencies?有没有办法让它这样做?

如果您选择“1”,它似乎使用了您想要的1.11.0版本。您能确认一下吗? - jacobq
确认。不幸的是,当我将angular-leaflet与其他所有东西一起投入生产时,它会对其他冲突产生相同的影响,并且会加载过多。因此,我想重点是尝试弄清楚如何忽略devDependencies。 - jchamberlain
1个回答

4
我认为你正在寻找的解决方案是文件中的resolutions部分,但是为什么你的dependenciesdevDependencies被分析也不清楚。
{
  "name": "bower-test",
  "dependencies": {
    "jquery": "1.x",
    "angular": "1.2.x",
    "angular-leaflet": "0.7.x"
  },
  "resolutions": {
    "jquery": "1.x"
  }
}

也许这与npm稍有不同,因为执行bower install xyz时,除非指定了-p--production参数,否则将包括devDependencies,但即使指定了该参数,似乎也无法传递给dependencies -- 也许这是一个错误。 更新: 问题似乎与此特定的软件包/设置相关,使用了angular-leaflet。其他组件没有这个问题。例如,bower install webmaker-analytics只会获取webmaker-analytics,而不是qunit,即使它在此软件包的devDependencies中列出。

我认为你说得对,这可能与特定的模块有关。我因其他工作而忙碌了几个星期,当我回来时,问题已经消失了,即使我没有将 bower 更新到最新版本。虽然我有点不喜欢不知道原因,但还是感谢你的帮助! - jchamberlain
如果您的好奇心驱使您不断探究,那么您可以通过查看过去一个月这些项目中的“CHANGELOG”条目获益。然而,在事情按照预期运行时,个人不建议花时间深入挖掘,除非它是您正在或将负责维护的代码(即不是作为依赖项主动引入的第三方项目)。 - jacobq

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