使用汇总

时间:2016-06-24 21:14:13

标签: rxjs5 rollupjs

我尝试使用依赖于RxJS(v5)的汇总捆绑项目。我喜欢的是汇总到树摇,只包括我正在使用的RxJS模块。

我想我已经接近了,但是它从system-observable离开了以下内容:

module.exports = require('./ponyfill')(global || window || undefined);

示例回购是here

我目前正在使用npm i rxjs-es,我知道还有其他rxjs安装,但我认为这是正确的。

这是我目前正在做的事情:

const rollup = require( 'rollup' );
const nodeResolve = require( 'rollup-plugin-node-resolve' );
const commonjs = require( 'rollup-plugin-commonjs' );

// found this online, it does seem to correctly rewrite the rxjs paths
// but is it helping or hurting?
class RollupRx {

    constructor( options ){
        this.options = options;
    }

    resolveId( id ){
        if(id.startsWith('rxjs/')){
            return `${__dirname}/node_modules/rxjs-es/${id.replace('rxjs/', '')}.js`;
        }
    }
}

const rollupRx = config => new RollupRx( config );

rollup.rollup({
    entry: 'index.js',
    plugins: [
        rollupRx(),
        nodeResolve({ jsnext: true, main: true }),
    ]
}).then( bundle => {
    bundle.write({
        format: 'iife',
        dest: 'bundle.js'
    });
}).catch( err => console.error( err ) );

更新:如果我将RxJS的唯一依赖项symbol-observable重写为ES6模块,那么它就能正常工作。

我的问题是:

  • 汇总(以及一些插件/配置)是否应该处理转换以获取CJS依赖?或者是否应该向symbol-observable制作公关以制作es6?
  • 自定义插件是否需要重写rxjs-es导入路径?或者是否有现成的插件或配置?

更新2 :大约一周前,symbol-observable看起来已经这样做了,但是npm正在安装旧版本。 (https://github.com/ReactiveX/rxjs/issues/1785

0 个答案:

没有答案