我尝试使用依赖于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模块,那么它就能正常工作。
我的问题是:
symbol-observable
制作公关以制作es6?rxjs-es
导入路径?或者是否有现成的插件或配置? 更新2 :大约一周前,symbol-observable
看起来已经这样做了,但是npm正在安装旧版本。 (https://github.com/ReactiveX/rxjs/issues/1785)