webpack4文件配置
1.初始化项目结构,生成package.json文件
npm init -y
2.使用webpack所需要的一些插件
//webpack插件 "webpack": "^4.46.0", //webpack命令插件 "webpack-cli": "^3.3.12", //webpage拷贝插件 "copy-webpack-plugin": "^6.4.1", //webpack的html生成插件 "html-webpack-plugin": "^4.5.1", //webpack静态服务插件 "webpack-dev-server": "^3.11.2" //art模板和模板加载插件 "art-template":"^4.13.2" "art-template-loader":"^1.4.3" //用于清除因配置hash名而产生上次生成的同样文件 "clean-webpack-plugin":"^3.0.0" //用于对于js中import引入的css做解析 "css-loader":"^5.0.2" "style-loader":"^1.3.0" //页面用bootstrap框架 "bootstrap": "^4.6.0", // 基于jquery "jquery": "^3.5.1",
3.创建一个webpack.config.json文件
var path = require("path"); var HtmlWebpackPlugin = require("html-webpack-plugin"); var CopyPlugin = require("copy-webpack-plugin"); var {CleanWebpackPlugin}=require("clean-webpack-plugin"); module.exports = { // 开发环境或者生产环境 mode: "development", // 生成map映射文件,当项目被打包后会压缩, // 有这个map文件就可以更精准的知道是哪个地方出现了错误 devtool: "source-map", // 入口,在整个html页面中执行的入口js文件 //前面是编译过的地址,后面是编译前的地址 entry: { "js/app": "./src/app.js" }, // 出口配置,自动生成压缩后的文件夹 output: { // 输出路径 path: path.join(__dirname, "./dist"), // 输出生成的js文件,在这里[name]是原文件名是什么就导出对应的名字 //[hash:6] 自动增加尾缀hash值用来区分上一次的文件,减少因为缓存引入上次的文件问题 filename: "[name]-[hash:6].js" }, //模块 module: { rules: [ //配置art-template-loader模块,用于加载所有.art的文件并且根据需求加载完成后解析 { test: /\.art$/, use: { loader: "art-template-loader" } }, //配置CSS文件的import引入和解析 { test: /\.css$/i,use: ["style-loader", "css-loader"] } ] }, // webpage提供的插件 plugins: [ // 用于自动构建html页面的插件 new HtmlWebpackPlugin({ // 网页源目录 template: path.join(__dirname, "./public/index.html"), // 目标文件名 app: "index.html", // 注入,如果不设定这个就会造成源html内容丢失 inject: true }), // 用于复制源文件夹中指定的文件 new CopyPlugin({ // 插件配置 from从某文件夹复制,to到某文件夹 patterns: [ { "from": "./public/img", "to": path.join(__dirname, "./dist/img/") }, { "from": "./public/css", "to": path.join(__dirname, "./dist/css/") }, { "from": "./public/js", "to": path.join(__dirname, "./dist/js/") }, { "from": "./public/fonts", "to": path.join(__dirname, "./dist/fonts/") } ] }), //清除上次因为使用hash名称产生的相同文件 "[name]-[hash:6].js"这里配置造成 new CleanWebpackPlugin() ], // 设置服务配置,开启静态服务 devServer: { // 目标静态服务器地址指向的文件夹 contentBase: path.join(__dirname, "./dist"), // 端口号 port: 4001, //设置代理服务,解决跨域问题 proxy:{ "/api":{ target:"http://localhost:3000" } } } }
4.配置package.json文件里的script模块中的命令
"scripts": { //用于执行webpack打包项目 "build": "npx webpack", //用于打包并开启webpack静态服务 "dev": "npx webpack-dev-server" }
5.网页中的静态路径配置如下
public --img --css src --views --app.js