[vuejs/vue-cli]vue.config.js 引入 postcss-preset-env 导致打包时 publicPath 失效

2023-12-12 948 views
6
版本

5.0.0-alpha.0

环境信息
vue: *2.6.11 => 2.6.11     
@vue/cli: 4.5.3
重现步骤

在vue.config.js中加入css/loaderOptions/postcss/plugins/require('postcss-preset-env'),publicPath打包时 publicPath: process.env.ENV === 'production' ? '/project' : '/'。导致打包打不上‘project’

预期是什么?

资源路径正常

到底发生了什么?

缺少project

回答

8

如果您正在使用5.0.0-alpha.0,请使用process.env.NODE_ENV

vue.config.js

/** @type {import('@vue/cli-service').ProjectOptions} */
module.exports = {
  publicPath: process.env.NODE_ENV === 'production' ? '/project' : '/',
  css: {
    loaderOptions: {
      postcss: {
        postcssOptions: {
          plugins: [
            require('postcss-preset-env')
          ]
        }
      }
    }
  }
}
6

@fangbinwei 这种情况加上 require('postcss-preset-env')后,打包出来的资源路径是不带/project/的,去掉了可以。

module.exports = {
    publicPath: '/project/',
    css: {
        loaderOptions: {
            postcss: {
                plugins: [
                       require('postcss-preset-env')
                ]
            }
        }
    }
};
<script src=/js/chunk-vendors.e9a7b99b.js>
<script src=/project/static/js/chunk-vendors.f5cf48cd.js>
4

@chaizhize 可以提供复现的repo么

6

@chaizhize 在项目中执行 npm i postcss-preset-env -D . CLI 在加载vue.config.js的时候忽略了MODULE_NOT_FOUND错误, 需要看下这个问题

vue.config.js中的require('postcss-preset-env')执行失败了, 并且错误被CLI忽略了, 导致vue.config.js中的配置全被忽略了