背景:
我们有一个 Angular 2 应用程序,我们想开始使用 AOT 编译。很简单...除了我的依赖项之一...
我们使用 autobahn.js 通过 Web 套接字连接与我们的服务器进行通信。问题在于在汇总中加载此依赖项。
autobahn.js 的作者已经决定,对于他们的浏览器版本的库,他们将把它托管在 bower(很公平)而不是 npm。
我们有一个库,它用一些不错的实用程序包装 autobahn.js 并为我们处理其他事情。这很棒,因为它是一个通用的解决方案。这个库可以在浏览器和我们的 node.js 服务器中使用。(耶)
但是,节点版本autobahn
使用fs
、url
和其他节点特定功能。(嘘)
他们的bower
库版本使用正确的浏览器等效版本,这很好。
在包装器中,我们有一个import * as autobahn from 'autobahn';
(我们使用打字稿)这在节点中效果很好,并且在 SystemJS 中的一些配置也很好用。
问题:
如何告诉rollup
(或rollup-plugin-commonjs
)指向bower_components/autobahnjs/autobahn.js
文件而不是node_modules/autobahn/index.js
默认情况下的文件。
当前配置:
import rollup from 'rollup';
import nodeResolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import uglify from 'rollup-plugin-uglify';
export default {
entry: 'dist/iss/index.js',
dest: 'dist/iss/bundle.js',
sourceMap: false,
format: 'iife',
moduleName: 'statusMonitor',
external: [
'autobahn',
'moment',
'moment-timezone'
],
context: 'window',
plugins: [
nodeResolve({jsnext: true, module: true, browser: true}),
commonjs({
include: 'node_modules/**'
}),
json(),
uglify()
]
}
其他选项:
另一个对我们有用的选项是它autobahn
也可以作为全局变量,如果我们可以修补汇总以使用全局变量,autobahn
那么window
这将适用于我们的用例。