点汇总到备用文件以进行导入

问题描述 投票:1回答:2

背景:

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

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

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

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

然而,autobahn的节点版本使用fsurl和其他节点特定功能。 (BOO)

他们的库的bower版本使用了正确的浏览器等价物。

在包装器中我们有一个import * as autobahn from 'autobahn';(我们使用typescript)这在节点中运行良好,并且在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那么这将适用于我们的用例。

rollupjs
2个回答
2
投票

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


0
投票

它现在在npm

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

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

npm install autobahn-browser

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

© www.soinside.com 2019 - 2024. All rights reserved.