Sweetalert2正在破坏我的Angular2身材

Sweetalert2正在破坏我的Angular2身材,angular,uglifyjs,sweetalert,rollup,aot,Angular,Uglifyjs,Sweetalert,Rollup,Aot,我使用的是相当标准的AOT和汇总构建,具体如下: rollup.config.js: import rollup from 'rollup' import nodeResolve from 'rollup-plugin-node-resolve' import commonjs from 'rollup-plugin-commonjs'; import uglify from 'rollup-plugin-uglify' export default { en

我使用的是相当标准的AOT和汇总构建,具体如下:

rollup.config.js:

import rollup      from 'rollup'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs    from 'rollup-plugin-commonjs';
import uglify      from 'rollup-plugin-uglify'

export default {
    entry: 'app/main-aot.js',
    dest: 'dist/process-tracker.js', // output a single application bundle
    sourceMap: true,
    sourceMapFile: 'dist/process-tracker.js.map',
    format: 'iife',
    plugins: [
        nodeResolve({jsnext: true, module: true}),
        commonjs({
            include: ['node_modules/**'],
            namedExports: {
                'node_modules/lodash/lodash.js': ['merge', 'clone', 'cloneDeep']
            }
        }),
        uglify()
    ]
}
tsconfig-aot.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es2015", "dom"],
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": [
      "node_modules/@types/"
    ]
  },

  "files": [
    "app/app.module.ts",
    "app/main-aot.ts"
  ],

  "angularCompilerOptions": {
    "genDir": "aot",
    "skipMetadataEmit" : true
  }
}
一切都按照最初的预期进行了编译和丑化,但我最近创建了一个对话框服务,它依赖于。现在,当我运行aot和汇总任务时,uglify步骤失败,使用“uglify”插件转换捆绑包时出现
错误:SyntaxError:Unexpected token:operator(>)

我追踪到了我包中的sweetalert代码:

const swalPrefix = 'swal2-';

const prefix = (items) => {
  const result = {};
  for (const i in items) {
    result[items[i]] = swalPrefix + items[i];
  }
  return result
};
因此,这个库中的fat arrow函数将原封不动地通过编译器。UglifyJS崩溃是因为它还不支持这种语法。我对如何配置SystemJS进行了修改,但这并没有改变行为。这就是我目前拥有的:

map: {
    'sweetalert2': 'npm:sweetalert2'
}

packages: {
    sweetalert2: {
        main: './dist/sweetalert2.js',
        defaultExtension: 'js'
    }
}
有没有办法让ngc编译器或rollup关注第三方代码并将其翻译成ES5

更新:

答案一定是SystemJS的工作方式?我所指的dist文件没有ES6语法——它们显然已经被传输了。那么,为什么实际的源文件会被拉进来呢

更新:

不,这不可能是SystemJS的事。它必须在Rollup或某个插件中。我已经浏览了commonjs和node resolve插件的文档和问题,但没有找到任何有助于我理解发生了什么的东西。我已将commonjs include数组更改为不那么通用,但没有更改:

include: [
    'node_modules/rxjs/**',
    'node_modules/sweetalert2/dist/**',
    'node_modules/lodash/**'
],

可能想研究一下如何使用来传输你的甜蜜警报。看起来还有一个工具可以帮助您进行汇总babel集成。我考虑过这一点,但是库已经被传输(dist文件夹),但是包中包含了src文件夹中的原始ES6源代码。有任何更新吗?我也面临同样的问题,我放弃了,从CDN(js和css)中提取了SweetAlert2依赖项。在较新的项目中,我使用了Angular CLI和Angular material。我可能想研究一下如何使用来传输我们的甜蜜警报。看起来还有一个工具可以帮助您进行汇总babel集成。我考虑过这一点,但是库已经被传输(dist文件夹),但是包中包含了src文件夹中的原始ES6源代码。有任何更新吗?我也面临同样的问题,我放弃了,从CDN(js和css)中提取了SweetAlert2依赖项。在较新的项目中,我使用了Angular CLI和Angular material。