rollup打包不支持async语法吗?
入口文件index.js
const { determineRepoDir } = require('./expo');
// const { determineRepoDir } = require('../lib/profile');
determineRepoDir()
expo.js
import 'babel-polyfill';
const { mark } = require('./out');
// import { mark } from './out';
// const xx = async function(){
// console.log('**xxxx**')
// }
module.exports = { mark };
out.js
const mark = async function(){
console.log('***mark***');
}
module.exports = { mark };
// export const mark = async function(){
// console.log('***mark***');
// }
rollup.config.js
import { terser } from 'rollup-plugin-terser';
import commonjs from '@rollup/plugin-commonjs';
// Rollup plugin to convert CommonJS modules to ES6, so they can be included in a Rollup bundle
import bin from '../rollup-plugin/inject-bin'
import babel from '@rollup/plugin-babel';
import { nodeResolve } from '@rollup/plugin-node-resolve';
//rollup无法识别node_modules中的包
// const treeshake = {
// moduleSideEffects: false,
// propertyReadSideEffects: false,
// tryCatchDeoptimization: false
// };
export default () => {
const esmBuild = {
input: {
'index': 'index',
},
output: {
chunkFileNames: 'shared/[name]',
dir: 'dist',
format: 'cjs'
},
// treeshake,
plugins: [nodeResolve(),commonjs(),babel({
exclude: 'node_modules/**' // 只编译我们的源代码
}),terser(), bin()]
};
return esmBuild;
};
现象就是如果expo.js的fff函数不带async头或polyfill,那么out文件里面的代码就会被打包起来,否则不会打包,只会保留require的代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
rollup 默认开启 tree-shaking
你这个代码片段没有被引入的可能 (带不带async一样),都会被忽略。
可以试试
https://www.rollupjs.org/repl/