打包样式资源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| const {resolve} =require('path') module.exports={ entry:'./src/index.js', output:{ filename:'built.js', path:resolve(__dirname,'build')
}, module:{ rules:[ {test:/\.css$/, use:[ 'style-loader', 'css-loader' ]}, { test:/\.less$/, use:[ 'style-loader', 'css-loader', 'less-loader', ] }
] }, plugins:[ ], mode:'development'
}
|
打包html资源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| const {resolve} =require('path') const HtmlWebpackPlugin=require('html-webpack-plugin') module.exports={ entry:'./src/index.js', output:{ filename:'built.js', path:resolve(__dirname,'build')
}, module:{ rules:[ {test:/\.css$/, use:[ 'style-loader', 'css-loader' ]}, { test:/\.less$/, use:[ 'style-loader', 'css-loader', 'less-loader', ] }
] }, plugins:[ new HtmlWebpackPlugin({ template:'./src/index.html' }) ], mode:'development' }
|
打包图片
html-loader 以相同的方式处理 <img src="./my-image.png" />
。需要npm i html-wepack-plugin
[]: https://webpack.docschina.org/loaders/html-loader
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { test:/\.(png|svg|jpg|jpeg|gif)$/i, type:'asset/resource',
}, { test:/\.html$/i, loader:"html-loader", }, { test:/\.(woff|woff2|eot|ttf|otf)$/i, type:'asset/resource' },
|
打包xml,csv文件
可以加载的有用资源还有数据,如 JSON 文件,CSV、TSV 和 XML。类似于 NodeJS,JSON 支持实际上是内置的,也就是说 import Data from './data.json'
默认将正常运行。要导入 CSV、TSV 和 XML,你可以使用 csv-loader 和 xml-loader。让我们处理加载这三类文件:
1
| npm install --save-dev csv-loader xml-loader
|
1 2 3 4 5 6 7 8
| { test: /\.(csv|tsv)$/i, use: ['csv-loader'], }, { test: /\.xml$/i, use: ['xml-loader'], },
|
打包toml,yaml,json5
通过使用 自定义 parser 替代特定的 webpack loader,可以将任何 toml
、yaml
或 json5
文件作为 JSON 模块导入。
1
| npm install toml yamljs json5 --save-dev
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| const toml=require('toml') const yaml=require('yamljs') const json5=require('json5') ... { test: /\.toml$/i, type: 'json', parser: { parse: toml.parse, }, }, { test: /\.yaml$/i, type: 'json', parser: { parse: yaml.parse, }, }, { test: /\.json5$/i, type: 'json', parser: { parse: json5.parse, }, },
|
清理/dist文件
在每次构建前清理 /dist
文件夹,这样只会生成用到的文件。让我们使用 output.clean
配置项实现这个需求。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = { entry: { index: './src/index.js', print: './src/print.js', }, plugins: [ new HtmlWebpackPlugin({ title: 'Output Management', }), ], output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist'), + clean: true, }, };
|