Laravel-mix Webpack Public 路径

Laravel-mix Webpack Public Path

所以我正在使用 Laravel-Mix 并在 Webpack 中设置了代码拆分。我正在像这样为我的 Vue 组件使用动态导入。

Vue.component('UserMenu', () => import('./components/UserMenu.vue'));

由于我也在使用 Babel,因此我从项目根目录中的 .babelrc 文件中加载了语法动态导入插件。

一切正常,Webpack 在构建时正确地拆分了代码。然而,问题是,它将块放在 public 根而不是 public/js

如果在我的 webpack.mix.js 我做...

mix.js('resources/assets/js/app.js', 'public/js');

...然后混音将构建的文件正确放置在 /js 目录中。

但是为了对文件进行分块,如果在 webpack.mix.js 我这样做...

 mix.webpackConfig({
    entry: {
        app: './resources/assets/js/app.js',
    },
    output: {
        filename: '[name].js',
        publicPath: 'public/js',
    }
});

...无论我分配给 public 路径 属性 什么,所有块都放在 public 根目录中。

知道我错过了什么吗?

尝试使用 mix.setPublicPath('public/build') 方法设置 public 路径。

只需更改 webpack.mix.js 中 laravel 根文件夹下的块路径,

mix.webpackConfig({
    output: {
        filename:'js/main/[name].js',
        chunkFilename: 'js/chunks/[name].js',
    },
});

另请注意,laravel 更改主要 js 位置的方法是使用 mix.js 函数

mix.js('resources/assets/js/app.js', 'public/js/main')