utquidem
Version:
The meta-framework suite designed from scratch for frontend-focused modern web development.
92 lines (72 loc) • 2.02 kB
Markdown
---
sidebar_label: webpack
sidebar_position: 11
---
# tools.webpack
:::info 适用的工程方案
- MWA
:::
- 类型: `(config, { env, chain, webpack }) => void`
- 默认值: `undefined`
对应 [webpack](https://webpack.js.org/) 的配置,值为 `Function` 类型。
- 函数的第一个参数为内部的默认配置(只读)。
- 函数的第二个参数为修改 webpack 配置的工具集合,包括 `env`、`chain`、`webpack` 等。
### chain
函数第二个参数中的 `chain` 对象是一个 [webpack-chain](https://github.com/neutrinojs/webpack-chain) 实例,通过 `chain` 可以对 webpack 配置进行变更:
```js title="modern.config.js"
export default defineConfig({
tools: {
webpack: (config, { chain }) => {
chain.resolve.alias.set('@example', `${appDirectory}/src/example`);
},
},
});
```
以下是 `chain` 常见用法的示例:
```js title="modern.config.js"
export default defineConfig({
tools: {
webpack: (config, { chain }) => {
// 自定义 loader
chain.module
.rule('compile-svg')
.test(/\.svg$/)
.use('svg-inline')
.loader('svg-inline-loader');
// 自定义 plugin
chain
.plugin('clean')
.use(CleanPlugin, [['dist'], { root: '/dir' }]);
// 修改 SourceMap 格式
chain.devtool('source-map');
},
},
});
```
完整 API 请参考 [webpack-chain 文档](https://github.com/neutrinojs/webpack-chain)。
### env
获取当前环境值为 `development` 还是 `production`:
```js title="modern.config.js"
export default defineConfig({
tools: {
webpack: (config, { env }) => {
console.log(env); // => development
},
},
});
```
### webpack
获取 Modern.js 内部使用的 webpack 对象:
```js title="modern.config.js"
export default defineConfig({
tools: {
webpack: (config, { webpack }) => {
console.log(
new webpack.BannerPlugin({
banner: 'hello world!',
})
);
},
},
});
```