在polymer.json中有什么额外的依赖,什么是“!”意思?

时间:2018-03-01 02:41:23

标签: polymer

在默认的polymer.json文件中,我看到:

"extraDependencies": [
  "bower_components/webcomponentsjs/*.js",
  "!bower_components/webcomponentsjs/gulpfile.js",
  "manifest.json"
],

文档有点模糊:

  

Polymer构建工具链的分析器组件无法发现的依赖关系,可能是因为它们不是静态导入的,并且不需要捆绑。

  • 为什么工具链不能发现它?
  • 如果他们无法被发现,为什么我们需要包括他们?
  • 如果他们“不需要捆绑”,他们实际上做了什么?

1 个答案:

答案 0 :(得分:4)

  1. 正如文档所述,工具链无法发现这些文件,因为它们不是静态导入。分析器只知道静态导入,如下所示:

    <link rel="import" href="../bower_components/my-component.html">

    通过检查浏览器是否本机支持Web组件,以及如果没有加载Web组件polyfill,很可能会导入bower_components/webcomponentsjs/*.js动态。对于manifest.json,它不是作为HTML导入导入的,而是作为清单导入如下:

    <link rel="manifest" href="/manifest.json">

  2. 如果您使用polymer build制作应用的生产版本,则需要包含extraDependencies,因此polymer-cli知道将这些文件包含在您的构建中。

  3. 网页组件js文件不需要捆绑(请注意,它们仍然需要添加到 build ),因为你不能当像Chrome这样的浏览器本身支持它时,希望每个应用都有完整的网络组件polyfill。不应捆绑manifest.json,因为它是获取应用程序元数据所需的独立文件。