npm i (安装)
npm i -g (全局安装)
npm i -g jquery -S 生产环境
npm i jquery -D 开发模式
WebPack 的使用
初始化项目 进入项目文件中
npm init -y 初始化一个项目文件夹
npm i -g webpack webpack-cli webpack-dev-server -D
webpack —mode development //开发环境
webpack —mode production //生产环境
npm i html-webpack-plugin -D
npm i css-loader style-loader -D
npm i -D mini-css-extract-plugin
css兼容处理
安装资源 npm i postcss-loader postcss-preset-env -D
项目文件夹下创建 postcss.config.js
module.exports = {plugins: [require('postcss-preset-env')()]}
项目文件夹下的 package.json中添加
```javascript
“browserslist”: [
"> 0.2%","last 2 versions","not dead"
]
```
处理图片 npm i url-loader file-loader html-withimg-loader -D
处理css中的图片 直接用url()方法
#div{background-image:url("../image/1.png")}
html中使用图片 需要安装 html-withimg-loader
压缩CSS npm install css-minimizer-webpack-plugin -D
Less需要使用npm下载less包和less-loader
Sass需要使用npm下载node-sass包和sass-loader
npm i node-sass sass-loader -D
注意 创建sass文件时 是创建 index.scss
//在需要打包的 js 中引入样式 此处为cart.jsrequire('./base.css'); // 引入css样式require('./eduwork.css'); // 引入css样式require('./index.css'); // 引入css样式require('./list.css'); // 引入css样式require('./info.css'); // 引入css样式require('./cart.css'); // 引入css样式require("./index.scss"); //引入sass
在项目目录下 手动创建 webpack.config.js 为webpack的配置文件
var {resolve} =require('path');//引用html 插件var htmlWebpackPlugin = require("html-webpack-plugin");//引入打包css到独立文件的插件var miniCssExtractPlugin=require('mini-css-extract-plugin');//引入压缩css插件var cssMinimizerWebpackPlugin = require('css-minimizer-webpack-plugin');module.exports = {//打包开始的入口文件//可以是单个//entry:"./src/index.js",//也可以是多个(数组) 会打包在一个入口文件中//entry:["./src/index.js","./src/index2.js"]//还可以是对象模式 这时会生成多个入口文件main.js和index.jsentry: {index: "./src/index.js"},//打包后路径output: {//输出的入口文件名 单个入口//"filename":"main.js",//输出的入口文件名 多个入口"filename": "[name].js",//打包后的文件夹名"path": resolve(__dirname, 'dist')},plugins: [//使用html插件new htmlWebpackPlugin({//使用的html文件template: "./src/index.html",//输出的html文件名filename: "index.html",//可以 在输出的index.html 中引用指定js 对应entry 中的keychunks: ['index'],minify: {//移除空格collapseWhitespace: true,//移除注释removeComment: true},}),//创建 打包css到独立文件夹下的插件 对象new miniCssExtractPlugin({filename:'css/[name].css' //输出的css文件名,放置在dist/css目录下}),//创建 压缩css 对象new cssMinimizerWebpackPlugin()],module: {rules: [//处理css{// 正则表达式,表示.css后缀的文件test: /\.css$/,// 针对css文件使用的loader,注意有先后顺序,数组项越靠后越先执行use: [//css打包成独立文件{loader: miniCssExtractPlugin.loader} ,//css处理插件'css-loader',//css兼容性处理'postcss-loader']// use: ['style-loader','css-loader'] //style-loader类似打包到html中},//处理图片{test: /\.(png|jpg|jpeg|gif)$/,use: [{loader: 'url-loader',options: {// publicPath: './img/', //会在html的地址前加上这个outputPath: 'img/',limit: 1024 * 8,name:'[name][hash:8].[ext]',esModule: false}}],},// html加载图片{test:/\.(html)$/i,use:'html-withimg-loader', // 解析 html中的图片资源},//处理其他非js|json|html|css|less|scss|png|gif|jpg|jpeg文件{exclude: /\.(js|json|html|css|less|scss|png|gif|jpg|jpeg)$/,loader: 'file-loader',options: {outputPath: 'font/',publicPath: './font',name:'[name][hash:8].[ext]'}},//处理sass{// 正则表达式,表示.css后缀的文件test: /\.scss$/,// 针对css文件使用的loader,注意有先后顺序,数组项越靠后越先执行use: [//css打包成独立文件{loader: miniCssExtractPlugin.loader} ,//css处理插件'css-loader',//css兼容性处理'postcss-loader','sass-loader']// use: ['style-loader','css-loader'] //style-loader类似打包到html中},]},//默认打包方式 开发模式 | production 生产模式mode:'development',//服务器启动 npx webpack servedevServer: {port:8080,compress:true,open:true,hot:true},//生产模式打包时文件过大导致报错performance: {hints:'warning',//入口起点的最大体积maxEntrypointSize: 50000000,//生成文件的最大体积maxAssetSize: 30000000},//服务器启动后自动刷新target: "web",};
npx webpack serve
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号