Webpack打包路径问题

Webpack打包路径缺省为绝对路径。

如果想把打包路径改为相对自定义路径,对于build环境(即最终一般会部署到proxy后),需要修改config/index.js中的build段中的assetsPublicPath即可。

... ...
module.exports = {
  dev: {

    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: './',
... ...

关于这个assetsPublicPath,再多说两句。

不论assetsPublicPath设置成绝对路径还是相对路径,在我们的js文件中我们自己引入的任何URL,不管是script标签的src属性,还是img标签的src属性,如果URL是绝对路径,压缩打包后生成文件中对应URL就是绝对路径;如果URL是相对路径,压缩打包后生成文件中对应URL就是相对路径。也就是说,assetsPublicPath不会修改代码中既有URL路径。

那么assetsPublicPath影响什么URL呢?assetsPublicPath影响的是:Webpack最终自动在index.html中插入的,由Webpack自动压缩打包生成的js引用的URL。

举例来说,如果assetsPublicPath设为'/'(缺省行为),则最终的index.html中会包含形如:

<body>
... ...
<!-- 不是我们自己写的代码哦,是Webpack压缩打包后自动在代码中插入的 -->
<script type=text/javascript src=./static/js/app.e9385f9da30ed4834acc.js></script>
... ...
</body>

如果assetsPublicPath设为'./',则最终的index.html中会包含形如:

<body>
... ...
<script type=text/javascript src=./static/js/app.e9385f9da30ed4834acc.js></script>
... ...
</body>

关于assetsPublicPath言尽于此。

对于dev环境(即启动Node.js服务),只修改config/index.js中的dev段中的assetsPublicPath是不行的,还需要将build/webpack.dev.conf.js中devServer段中的publicPath改为'/'。

... ...
  devServer: {
    clientLogLevel: 'warning',
    historyApiFallback: {
      rewrites: [
        { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
      ],
    },
    hot: true,
    contentBase: false, // since we use CopyWebpackPlugin.
    compress: true,
    host: HOST || config.dev.host,
    port: PORT || config.dev.port,
    open: config.dev.autoOpenBrowser,
    overlay: config.dev.errorOverlay
      ? { warnings: false, errors: true }
      : false,
    publicPath: '/',
... ...

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值