0

我正在尝试使用 RollupJS 捆绑我的 Angular2 应用程序,但我遇到了一些问题:

  1. 找不到我的 AppComponent 引用的 css 文件并引发错误。

使用 'angular' 插件转换 /demo-app.ts 时出错:ENOENT:没有这样的文件或目录,打开 /demo-app.css

为了解决这个问题,我编写了一个 gulp 任务来将我的 scss 文件编译为 css。但我的印象是 Rollup 能够做到这一点。

  1. 一个 rxjs 模块导致我出错。

模块 /node_modules/rxjs/observable/of.js 不导出(由 /@angular/router/src/apply_redirects.js 导入)

我尝试使用 rollup-plugin-alias 并编写一个特定的 resolveRxJS 函数来解决这个问题,但没有运气。

const babel = require('rollup-plugin-babel');
const eslint = require('rollup-plugin-eslint');
const commonjs = require('rollup-plugin-commonjs');
const typescript = require('rollup-plugin-typescript');
const angular = require('rollup-plugin-angular');
const alias = require('rollup-plugin-alias');
const resolve = require('rollup-plugin-node-resolve');
const progress = require('rollup-plugin-progress');
const postcss = require('rollup-plugin-postcss');

export default {
    entry: 'src/demo-app/main.ts',
    dest: 'dist/demo-app/bundle.min.js',
    format: 'iife',
    sourceMap: 'inline',
    plugins: [
        {
            resolveRxJS: id => {
                if (id.startsWith('rxjs/') || id.startsWith('rxjs\\')) {
                    let result = `${__dirname}/node_modules/rxjs-es/${id.replace('rxjs/', '')}.js`;
                    return result.replace(/\//g, "\\");
                }
            }
        },
        angular(),
        typescript({
            typescript: require('typescript'),
            tsconfig: tsOptions
        }),
        //alias({
        //    rxjs: __dirname + '/node_modules/rxjs'
        //}),
        babel({
            exclude: '/node_modules/**',
            include: '/node_modules/tslint-no-unused-var/**',
            // include: '/node_modules/rxjs/**'
        }),
        resolve({
            module: true,
            jsnext: true
        }),
    ]
}

注释掉的代码是我尝试过的其他东西。注意:我也尝试在 rollup-plugin-angular 函数中使用预处理器,它也没有编译我的 css。

所以回顾一下 1) 在运行汇总代码之前,我是否总是必须使用 gulp 编译我的 scss 文件?2) 如何解决 rxjs 模块问题?

谢谢

4

2 回答 2

0

检查我的工作存储库,启用汇总的 aot 构建,https://github.com/beginor/angular-seed

于 2017-02-25T09:44:06.300 回答
0

我设法通过添加 rollup-plugin-commonjs 模块并包含 rxjs node_module 库来实现此功能。

commonjs({
    include: 'node_modules/rxjs/**',
), 
于 2017-02-26T13:33:30.073 回答