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的代码

阅读 4.7k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题