Sweetalert2正在破坏我的Angular2身材
我使用的是相当标准的AOT和汇总构建,具体如下: rollup.config.js: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
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。