Javascript 如何在没有动态导入的情况下在next中拆分commons js?

Javascript 如何在没有动态导入的情况下在next中拆分commons js?,javascript,webpack,next.js,Javascript,Webpack,Next.js,我的项目中有一个文件,其中有几个export-ASSET\u-NAME=require('/assets/myAsset.png')这样导出,我将它用于一些ui位,我想使用url-loader以这些资产图像为基础 然后,我在项目的各个页面中使用这个文件,即从“/assets.js”import{ASSET\u NAME} 检查完我的构建项目后,我可以看到所有这些base64字符串都位于我的commons.js文件中。理想情况下,我希望这个文件是它自己的,比如assets.js,这样它就可以与co

我的项目中有一个文件,其中有几个
export-ASSET\u-NAME=require('/assets/myAsset.png')
这样导出,我将它用于一些ui位,我想使用
url-loader
以这些资产图像为基础

然后,我在项目的各个页面中使用这个文件,即从“/assets.js”import{ASSET\u NAME}


检查完我的构建项目后,我可以看到所有这些base64字符串都位于我的
commons.js
文件中。理想情况下,我希望这个文件是它自己的,比如
assets.js
,这样它就可以与
commons.js
并行加载。阅读完文档后,我看到的唯一方法是通过,但是我不想等待此文件,也不想在用户执行某些操作时加载它,我只想将它作为单独的文件并行加载到我的页面/与commons分开,js

您需要在
next.config.js
文件中指定一个新的
splitChunk

// next.config.js

module.exports = {
  webpack(config, options) {
    if (!options.isServer) {
      config.optimization.splitChunks.cacheGroups.assetsChunk = {
        chunks: 'all',
        enforce: true,
        minChunks: 1,
        name: 'assets-chunk',
        priority: 10,
        test: /[\\\/]path-to-your-asset[\\\/]/,
      };
    }
    return config;
  },
};

只需将资产的路径替换为导入路径(或者部分路径,因为它是正则表达式)


欲了解更多信息,请阅读。

您是否有机会详细说明为什么需要在此处进行客户检查<代码>!options.isServer通常块分割对服务器端没有任何影响,如果你想将其应用于服务器(为什么?),你可以删除此检查:]你知道我如何将块的数量限制在不超过3个,我在谷歌机器人上遇到了很多麻烦。