rollup打包不支持async语法吗?

发布于 2022-09-12 13:01:41 字数 1657 浏览 16 评论 0

入口文件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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苹果你个爱泡泡 2022-09-19 13:01:41

rollup 默认开启 tree-shaking

你这个代码片段没有被引入的可能 (带不带async一样),都会被忽略。

可以试试
https://www.rollupjs.org/repl/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文