webpack.dev.js
const path=require("path")//nodejs核心模块 专门用来处理路径问题 const ESLintPlugin = require('eslint-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports={ entry:"./src/main.js", //输出 output:{ // 文件输出路径 // __dirname nodejs的变量 ,代表当前文件的文件夹目录 // path:path.resolve(__dirname,"dist"),//绝对路径 path:undefined,//绝对路径,但是开发环境不需要输出 // 文件名 filename:"static/js/main.js", // 自动清空上次打包结果 clean:true, }, // 加载器 module:{ rules:[ // loader的配置 { test: /\.css$/i,//只检测css文件 use: [ // 执行顺序 从右到左 (从下到上) "style-loader", //将js中css通过创建style标签使html生效 "css-loader" //将css资源编译成commenjs模块到js中 ], }, { // 处理图片 test: /\.(png|jpe?g|gif|webp)$/, type: "asset", }, { //小于10kb转化直接渲染的base64格式 test: /\.(png|jpe?g|gif|webp)$/, type: 'asset', parser: { dataUrlCondition: { maxSize: 10 * 1024 // 10kb } }, generator: { // 输出图片名称 // hash:10 hash值只取前十位 filename: 'static/image/[hash:10][ext][query]' } }, { test: /\.(ttf|woff2?)$/, type: "asset/resource", generator: { filename: "static/media/[hash:10][ext][query]", }, }, { test: /\.m?js$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', // options: { // presets: ['@babel/preset-env'] // } } } ] }, // 插件 plugins: [new ESLintPlugin({ //检测哪些文件 context:path.relative(__dirname,"../src") }), new HtmlWebpackPlugin({ // 以public/index.html为魔板创建新的文件 // 新的文件结构一致,并且引入打包生成的资源 template:path.resolve(__dirname,"../public/index.html") }) ], // 开发服务器,不会输出资源在内存中打包 命令npx webpack serve devServer: { host: "localhost", // 启动服务器域名 port: "3000", // 启动服务器端口号 open: true, // 是否自动打开浏览器 }, // 模式 mode:"development" }
webpack.prod.js
const path=require("path")//nodejs核心模块 专门用来处理路径问题 const ESLintPlugin = require('eslint-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); module.exports={ entry:"./src/main.js", //输出 output:{ // 文件输出路径 // __dirname nodejs的变量 ,代表当前文件的文件夹目录 path:path.resolve(__dirname,"../dist"),//绝对路径 // 文件名 filename:"static/js/main.js", // 自动清空上次打包结果 clean:true, }, // 加载器 module:{ rules:[ // loader的配置 { test: /\.css$/i,//只检测css文件 use: [ // 执行顺序 从右到左 (从下到上) MiniCssExtractPlugin.loader, //提取css成单独的文件 "css-loader" ,//将css资源编译成commenjs模块到js中 { loader: "postcss-loader", options: { postcssOptions: { plugins: [ "postcss-preset-env", // 能解决大多数样式兼容性问题 ], }, }, }, ], }, { // 处理图片 test: /\.(png|jpe?g|gif|webp)$/, type: "asset", }, { //小于10kb转化直接渲染的base64格式 test: /\.(png|jpe?g|gif|webp)$/, type: 'asset', parser: { dataUrlCondition: { maxSize: 10 * 1024 // 10kb } }, generator: { // 输出图片名称 // hash:10 hash值只取前十位 filename: 'static/image/[hash:10][ext][query]' } }, { test: /\.(ttf|woff2?)$/, type: "asset/resource", generator: { filename: "static/media/[hash:10][ext][query]", }, }, { test: /\.m?js$/, exclude: /(node_modules|bower_components)/, use: { loader: 'babel-loader', // options: { // presets: ['@babel/preset-env'] // } } } ] }, // 插件 plugins: [new ESLintPlugin({ //检测哪些文件 context:path.relative(__dirname,"../src") }), new HtmlWebpackPlugin({ // 以public/index.html为魔板创建新的文件 // 新的文件结构一致,并且引入打包生成的资源 template:path.resolve(__dirname,"../public/index.html") }), new MiniCssExtractPlugin({ filename:"static/css/main.css" }), new CssMinimizerPlugin(), ], // 开发服务器,不会输出资源在内存中打包 命令npx webpack serve // devServer: { // host: "localhost", // 启动服务器域名 // port: "3000", // 启动服务器端口号 // open: true, // 是否自动打开浏览器 // }, // 模式 mode:"production" }
package.json
{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "npm run dev", "dev": "webpack serve --config ./config/webpack.dev.js", "build": "webpack --config ./config/webpack.prod.js" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@babel/core": "^7.20.2", "@babel/preset-env": "^7.20.2", "babel-loader": "^9.1.0", "css-loader": "^6.7.2", "css-minimizer-webpack-plugin": "^4.2.2", "eslint": "^8.28.0", "eslint-webpack-plugin": "^3.2.0", "html-webpack-plugin": "^5.5.0", "less": "^4.1.3", "less-loader": "^11.1.0", "mini-css-extract-plugin": "^2.7.0", "postcss": "^8.4.19", "postcss-loader": "^7.0.1", "postcss-preset-env": "^7.8.3", "sass": "^1.56.1", "sass-loader": "^13.2.0", "style-loader": "^3.3.1", "stylus": "^0.59.0", "stylus-loader": "^7.1.0", "webpack": "^5.75.0", "webpack-cil": "^0.0.1-security", "webpack-cli": "^5.0.0", "webpack-dev-server": "^4.11.1" }, "browserslist": [ "last 2 version", "> 1%", "not dead" ] }
.eslintrc.js
module.exports = { // 继承 Eslint 规则 extends: ["eslint:recommended"], env: { node: true, // 启用node中全局变量 browser: true, // 启用浏览器中全局变量 }, parserOptions: { ecmaVersion: 6, sourceType: "module", }, rules: { "no-var": 2, // 不能使用 var 定义变量 }, };
原文地址:http://www.cnblogs.com/xiaobaizitaibai/p/16918978.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性