Webpack4 配置 Output

本文主要介绍Webpack4中Output属性的配置。Output属性用于指定webpack创建的bundles的输出位置和文件名。详细讲解了filename、chunkFilename、path和publicPath四个配置项,包括其作用、使用方法及注意事项,如filename可配置输出文件名,支持静态字符串和内置变量模板等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Webpack4 配置 Output

output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程。output 是一个 object,里面包含一系列配置项,下面分别介绍它们。

简单案例:( webpack.config.js )

// 1.导入的 path 模块是什么,它是一个 Node.js 核心模块,用于操作文件路径
const path = require('path');

module.exports = {
  entry: './path/to/my/entry/file.js',
  // 2.output 属性接收的是一个对象属性
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
  }
};

1.filename

静态字符串

output.filename 配置输出文件的名称,为string 类型。 如果只有一个输出文件,则可以把它写成静态不变的:

新建一个项目,目录如下:

|-- src
|   |               `-- common.js
|   |               `-- index.html
|                   `-- main.js
`-- webpack.config.js

webpack.config.js

const path = require('path');
module.exports = {
  entry: './src/main.js',
  output: {
    // 1.指定输出的文件的名称为 bundle.js ( 默认为main.js )
    filename: 'bundle.js'
  }
};

其它文件的内容与上一篇博客保持不变,或者下载源码

webpack --mode development打包后的输出的结果:

|-- dist
|                   `-- bundle.js
|-- src
|   |               `-- common.js
|   |               `-- index.html
|                   `-- main.js
`-- webpack.config.js

借助内置变量和模板

内置变量名含义
idChunk 的唯一标识,从0开始
nameChunk 的名称
hashChunk 的唯一标识的 Hash 值
chunkhashChunk 内容的 Hash 值

其中 hashchunkhash 的长度是可指定的,[hash:8] 代表取8位 Hash 值,默认是20位。

注意 ExtractTextWebpackPlugin 插件是使用 contenthash 来代表哈希值而不是 chunkhash, 原因在于 ExtractTextWebpackPlugin 提取出来的内容是代码内容本身而不是由一组模块组成的 Chunk。

webpack.config.js

const path = require('path');
module.exports = {
  entry: './src/main.js',
  output: {
    // 1.指定输出的文件的名称为 chunk 的 hash, 取10位  ( 默认为main.js )
    // []是模板符号,模板里面使用 name 内置变量。 
    filename: '[hash:10].js'
  }
};

webpack --mode development打包后输出:

|-- dist
|   |               `-- 2c86058500.js
|-- src
|   |               `-- common.js
|   |               `-- index.html
|                   `-- main.js
`-- webpack.config.js

2.chunkFilename

output.chunkFilename 配置无入口的 Chunk 在输出时的文件名称。 常见的会在运行时生成 Chunk 场景有:在使用 CommonChunkPlugin、使用 import('path/to/module') 动态加载等时。

chunkFilename 和 filename 使用基本一样,内置变量也是一样

3.path

output.path 配置输出文件存放在本地的目录,必须是 string 类型的绝对路径。通常通过 Node.js 的 path 模块去获取绝对路径:

webpack.config.js

const path = require('path');
module.exports = {
  entry: './src/main.js',
  output: {
    // 1.指定输出的文件的名称为 bundle.js ( 默认为main.js )
    // filename: 'bundle.js'
    filename: '[hash:10].js',
    // 2. 指定输出文件存放的目录(默认是dist目录)
    path: path.resolve(__dirname, './dist'), // 借助node的path模块来拼接一个绝对路径
  }
};

4.publicPath

publicPath 配置发布到线上资源的 URL 前缀,为string 类型。 默认值是空字符串 '',即使用相对路径。配置代码如下:

webpack.config.js

const path = require('path');
module.exports = {
  entry: './src/main.js',
  output: {
    // 1.指定输出的文件的名称为 bundle.js ( 默认为main.js )
    // filename: 'bundle.js'
    filename: '[hash:10].js',
    // 2. 指定输出文件存放的目录(默认是dist目录)
    path: path.resolve(__dirname, './dist'), // 借助node的path模块来拼接一个绝对路径
    publicPath:'https://cdn.xxxx.com/assets/'
  }
};

1.filename、chunkfilename、path、publicPath 都支持字符串模版

2.pathpublicPath 都支持字符串模版,但内置变量只有一个:hash 代表一次编译操作的 Hash 值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值