Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作网页包装&x2B;跨块的简洁内联函数?_Javascript_Webpack_Terser - Fatal编程技术网

Javascript 如何制作网页包装&x2B;跨块的简洁内联函数?

Javascript 如何制作网页包装&x2B;跨块的简洁内联函数?,javascript,webpack,terser,Javascript,Webpack,Terser,我在ES模块中定义了一个函数,我想确保它是内联的。当它只在一个块中使用时,它可以正常工作,但如果我从两个单独的块调用该函数,webpack会生成模块查找模式,从而阻止内联: //common.js 导出函数inlineMe(x){ 返回x; } //main.js 从“./common”导入{inlineMe}; 导入('./ext')。然后(ext=>{ if(inlineMe(true)){ ext.f(); }否则{ log('未内联'); } }); //ext.js 从“./commo

我在ES模块中定义了一个函数,我想确保它是内联的。当它只在一个块中使用时,它可以正常工作,但如果我从两个单独的块调用该函数,webpack会生成模块查找模式,从而阻止内联:

//common.js
导出函数inlineMe(x){
返回x;
}
//main.js
从“./common”导入{inlineMe};
导入('./ext')。然后(ext=>{
if(inlineMe(true)){
ext.f();
}否则{
log('未内联');
}
});
//ext.js
从“./common”导入{inlineMe};
导出函数f(){
log(inlineMe(true)-“inlined”:“notinlined”);
}
使用TerserPlugin和以下标准选项通过网页包运行

// webpack.config.js
module.exports = {
  mode: 'production',
  entry: './main.js',
  optimization: {
    minimizer: [
      new TerserPlugin({
        terserOptions: {
          compress: {passes: 50, inline: true, unsafe: true},
        },
      }),
    ],
  },
};
生成没有内联的结果。另一方面,如果我没有将代码分成块(即将
import()
表达式更改为正常的顶级导入),或者如果我没有从两个块中使用
inlineMe
,则内联工作正常。我认为这与webpack重写块的方式有关(它最终成为某种
对象(r.a)(!0)
,其中
r.a
似乎是由
函数r(e){return e}n.d(t,“a”,(function(){return r}))
间接定义的,所以terser对此无能为力也就不足为奇了)

有没有什么咒语可以让这种内联跨多个块工作?也许可以通过某种方式告诉webpack,这个功能/模块应该比其他功能/模块更可用