这篇文章主要讲了如何利用webpack构建一个项目,如何利用webpack-dev-server自动运行修改内容,如何打包css,less等,如何处理图片打包,使用url-loader以及如何使用字体图标。
webpack-study
- 新建一个webpack-study项目目录
初始化项目
创建项目目录
1 2 3 4 5
| // 在webpack-study目录下添加两个文件夹 dist src: - index.html - mian.js
|
- 在main.js中添加测试的js代码
1
| console.log('webpack is ok!')
|
- 在项目目录下添加配置文件webpack.config.js
1 2 3 4 5 6 7 8 9
| let path = require('path') let config = { entry: path.join(__dirname, './src/main.js'), putput: { path: path.join(_dirname, './dist'), filename: 'bundle.js' } } module.exports = config
|
- 在package.json中添加一个脚本
1
| "dev": "webpack-dev-server --open --port 3000 --contentBase src --hot"
|
- 安装webpack-dev-server
1 2 3 4 5 6 7 8 9 10 11 12
| npm i webpack-dev-server -D
# 报错 webpack-dev-server@3.1.14 requires a peer of webpack@^4.0.0 but none is installed. # 因为之前全局安装了webpack@3.8.1 这里需要在项目中安装一个webpack npm i webpack -D
# 运行 npm run dev 又报错 # Please install 'webpack-cli' in addition to webpack itself to use the CLI # webpack@4.0+版本需要安装 webpack-cli npm i webpack-cli -D
# 再次运行 npm run dev 成功打开index.html f12后可以看见 console.log打印内容
|
- 使用html-webpack-plugin插件后不再需要在index页面中引入js文件
1
| npm i html-webpack-plugin -D
|
1 2 3 4 5 6 7 8 9
| let htmlWebpackPlugin = require('html-webpack-plugin')
plugin: [ new htmlWebpackPlugin({ template: path.join(__dirname, './src/index.html'), filename: 'index.html' }) ]
|
- 打包css文件,在src总添加index.css文件,并在main.js中引入该文件
1 2 3
| import './src/index.css';
|
- 按照错误提示按照打包css的loader
1
| npm i style-loader css-loader -D
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, ] }
|
- 默认情况下webpack无法处理css中的url地址,不管是图片还是字体库都处理不了,这就需要安装url-loader
1
| npm i url-loader file-loader -D
|
1 2 3 4 5 6 7 8 9 10
| { test: /\.(jpg|png|gif|bmp|jpeg)/, use: 'url-loader' }
修改为:{ test: /\.(jpg|png|gif|bmp|jpeg)/, use: 'url-loader?limit=17300' }
修改为:{ test: /\.(jpg|png|gif|bmp|jpeg)/, use: 'url-loader?limit=17300&name=[name].[ext]' }
为了防止重名情况需要将第二个参数name做进一步修改(名称前加上hash的前八位): { test: /\.(jpg|png|gif|bmp|jpeg)/, use: 'url-loader?limit=17300&name=[hash:8]-[name].[ext]' }
|
- 在项目中使用字体图标,以bootstrap为例
安装完会包提示: bootstrap@4.2.1 requires a peer of jquery@1.9.1 - 3 ,如果只是使用css不必在意这些提示。
1 2 3
| import 'bootstrap/dist/css/bootstrap.css';
|
1 2
| { test: /\.(eot|svg|ttf|woff|woff2)/, use: 'url-loader' }
|