2

背景:

我们有一个 Angular 2 应用程序,我们想开始使用 AOT 编译。很简单...除了我的依赖项之一...

我们使用 autobahn.js 通过 Web 套接字连接与我们的服务器进行通信。问题在于在汇总中加载此依赖项。

autobahn.js 的作者已经决定,对于他们的浏览器版本的库,他们将把它托管在 bower(很公平)而不是 npm。

我们有一个库,它用一些不错的实用程序包装 autobahn.js 并为我们处理其他事情。这很棒,因为它是一个通用的解决方案。这个库可以在浏览器和我们的 node.js 服务器中使用。(耶)

但是,节点版本autobahn使用fsurl和其他节点特定功能。(嘘)

他们的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这将适用于我们的用例。

4

2 回答 2

2

有一个类似于 node-resolve的rollup-plugin-bower-resolve插件——如果你在 node-resolve之前plugins将它包含在你的数组中(或使用node-resolve 中的选项),那么它应该能够找到.skipautobahn

于 2016-10-11T12:30:22.460 回答
0

现在在 npm 上

https://github.com/crossbario/autobahn-js-browser

浏览器版本以 autobahn-browser 的名称发布到 npm。安装:

npm install autobahn-browser

注意:Autobahn 的 NodeJS 版本继续以 autobahn 的名义发布。

于 2019-03-29T02:26:48.020 回答