webpack中的配置文件 都写好了的
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 定义变量 }, };

浙公网安备 33010602011771号