JSPM与外部系统js文件捆绑

JSPM bundling with external system js file

我正在从 CDN 加载我的 angular2 文件作为系统 js 模块。

我有几个文件导入了angular2的各种系统js模块。

现在我想使用 JSPM 捆绑我的本地 javascript 文件。当我写命令时

  "jspm bundle app/main build.js"

JSPM 失败。由于 JSPM 试图在我的项目中找到 angular2 文件夹。我知道它检查 config.js 中定义的地图的原因。但我想知道如何克服这个问题。因为我不想在本地项目中安装 angular2 文件,而且我绝对不想从我的服务器向客户端浏览器提供 angular2 文件,所以我想使用 CDN。

请帮忙。

如果你想同时构建和使用 CDN(因为你配置了一些包从 CDN SystemJS 加载),你可以构建所有东西 但是 CDN 包。例如:

jspm bundle app/main.js - angular2 - whatever + somethingelse main-bundle.js --inject

否则,更简单,您可以将 CDN 链接直接放在您的 index.html 文件中,并仅将 SystemJS 用于本地包。

最后我找到了这样做的答案:

System Js 配置选项也有一个元信息。在此元信息中,我们可以编写以忽略 SystemJs 的模块被捆绑。所以假设我从 cdn 加载所有 angular2 模块,将它们导入本地模块,然后使用 systemJs 或 JSPM 构建它,那么我必须在 config.js(或 System.config 的选项中编写以下内容对象):

meta: {
        'angular2/*': {
            build: false
        },
        'rxjs/add/operator/map' : {
            build : false
        }
    }

这应该由 angular2 开发人员放在 config.js 中,以明确告诉 systemJs 在捆绑本地模块时避免寻找 angular2 模块和 rxjs 模块。这将为您提供从 cdn 加载 angular2 和 rxjs 的机会,因此不将它们包含在 config.js.

的地图选项中