fingerpan / vue-cli-plugin-dll

Vue CLI 3 plugin for Webpack DllPlugin/DllReferencePlugin
MIT License
76 stars 22 forks source link

inject 能否支持 publicPath? #32

Closed Shu-Ji closed 5 years ago

Shu-Ji commented 5 years ago

由于我的项目需要在生产环境支持每个静态文件前面添加一个前缀,即需要使用 vue/webpack 的 publicPath 参数:

// vue.config.js
const is_dev = process.env.NODE_ENV === 'development'

module.exports = {
    publicPath: is_dev ? '/' : '/xyz/',  // 生产环境需要添加 xyz 前缀
    pluginOptions: {
        dll: {
            entry: {
                vue: ['vue']
            },
            open: !is_dev
        },
    },
    ...
}

其中 xyz 是我的项目的名称,作为 url 的前缀。

在最终 yarn build 后,dist/index.html 中:

<script src=js/vue.f86b30a3.dll.js></script>
<script src=/xyz/js/chunk-vendors.691a8960.js></script>
<script src=/xyz/js/app.ba5cf1c4.js>

可以看到 vue 成功支持了 publicPath 参数,添加了前缀(后两个script 标签),但是 dll 的 自动 inject 的 js(第一个 script 标签)的 url 不正确,导致: 我本来是要获取 http://xxx.com/xyz/js/vue.f86b30a3.dll.js, 但是取成了 http://xxx.com/js/vue.f86b30a3.dll.js ,服务器上面不存在这个url。

注:其中 xyz 是通过 nginx 代理的,项目里面没有这个目录。

Shu-Ji commented 5 years ago

@fingerpan 有时间能否看下这个问题呢?

fingerpan commented 5 years ago

@Shu-Ji 好的