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

时间:2016-10-11 06:13:19

标签: rollupjs

背景:

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

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

autobahn.js的作者已经决定,对于他们的浏览器版本的库,他们将把它托管在凉亭(足够公平)而不是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那么这对我们有用用例。

2 个答案:

答案 0 :(得分:2)

有一个类似于node-resolve的rollup-plugin-bower-resolve插件 - 如果你在节点解析之前在plugins数组中包含它(或使用{{1} } node-resolve中的选项)然后它应该能够找到skip

答案 1 :(得分:0)

现在是npm

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

  

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

     

npm install autobahn-browser

     

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