我的webpack配置有DefinePlugin个清晰度:

module.exports = env => {
    const PROD = env.production;
    const mode = env.mode || (PROD ? 'production' : 'development');

    const plugins = [
        new LicenseCheckerWebpackPlugin(...),
        new CleanWebpackPlugin(...),
        new webpack.BannerPlugin(...),
        new CopyWebpackPlugin(...),
        new MiniCssExtractPlugin(...),
        new webpack.ProvidePlugin(...),
        new webpack.DefinePlugin({
            DEBUG: JSON.stringify(!PROD),
        }),
        new webpack.NormalModuleReplacementPlugin(...),
        new VueLoaderPlugin(),
        new ESLintPlugin(...),
    ];

    return {
        mode,
        performance: {...},
        entry: {...},
        output: {...},
        optimization: {
            minimize: mode === 'production',
            minimizer: [
                new TerserPlugin({
                    terserOptions: {
                        compress: {
                            drop_console: true,
                        },
                        output: {
                            ascii_only: true,
                        },
                    },
                }),
                new CssMinimizerPlugin(),
            ],
        },
        stats: 'minimal',
        watchOptions: { aggregateTimeout: 200 },
        devtool: mode === 'production' ? false : 'inline-source-map',
        resolve: {...},
        module: {
            rules: [...],
        },
        plugins,
    };
};

JS代码:

import { MyDebugModule } from './my-debug-module';

if (DEBUG) {
    MyDebugModule();
}

在最后的Bundle 包中没有调用MyDebugModule(),但是当DEBUGfalse时,webpack从my-debug-module.js导入代码. 如果我完全删除代码if (DEBUG) { MyDebugModule(); },webpack就会删除my-debug-module代码.

webpack@5.88.2

sideEffects不影响导入的模块

推荐答案

我的问题有一个答案:

实际上对导入的模块有sideEffects%的影响--这就是webpack将其保留在代码中的原因

我们可以结束这个问题

Javascript相关问答推荐

JavaScript setSYS()是否有可能更早触发?

Vue-Router渲染组件但不更改网址

Vue Quill css仅应用于我的第一个Quill Editor组件+如何自定义工具栏

在时间轴完整日历中显示日期标题

如何编辑代码FlipDown.js倒计时?

无法将nPM simplex-noise包导入在JS项目中工作

TypScript界面中的Infer React子props

窗口.getComputedStyle()在MutationObserver中不起作用

过滤对象数组并动态将属性放入新数组

WebRTC关闭navigator. getUserMedia正确

S文本内容和值不必要的不同

TypeError:无法读取未定义的属性(正在读取';宽度';)

更新Redux存储中的对象数组

使用自动识别发出信号(&Q)

如何用javascript更改元素的宽度和高度?

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

处理app.param()中的多个参数

我正在试着做一个TicTacToe Ai来和我玩.但是,我试着在第一个方块被点击时出现一个X,然后在第二个方块之后出现一个O

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

MongoDB通过数字或字符串过滤列表