webpack4.x配置
总结下自己的配置的webpack,希望能帮助到大家同时也给自己做个笔记。
1.第一步
配置前,我们新建一个文件夹"project",打开cmd命令输入 npm init 初始化项目。
2.第二部
输入 npm install --save-dev webpack 或 yarn add webpack --dev 安装webpack依赖包。
3.第三部
我们在“project”新建一个文件夹"src","index.html","build",在“build”文件新建“webpack.base.config.js”,“webpack.dev.config.js”,"webpack.prod.config.js"。
webpack.base.config.js配置如下:
const path = require("path");
const webpack = require("webpack");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
// const merge = require('webpack-merge');
// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
function resolve(dir) {return path.join(__dirname, '..', dir);
}
module.exports = {context: path.resolve(__dirname, '../'),entry: {main: './src/main.js'},output: {path: path.resolve(__dirname, '../dist'),filename: "js/[hash].js"},module: {rules: [{// that's your main setup for compiling scsstest: /\.scss$/,use:[MiniCssExtractPlugin.loader, // webpack4.x添加单独处理css{loader:'css-loader',options:{importLoaders:2}},//importLoaders代表import进来的资源;2代表css-loader后还需要使用几个loader{loader: 'postcss-loader',options:{plugins:[require("autoprefixer")({ // 使用postcss-loader给css加前缀 必须要引入"autoprefixer"插件才有效browsers: ["ios >= 5", "Android >= 2.4", "last 2 versions"]})]}},{loader: 'sass-loader'}]},// {// test: /\.(sa|sc|c)ss$/,// use: [// "style-loader",// 'css-loader',// 'sass-loader',// ],// include: [resolve('src')]// },{test: /\.(js|jsx)$/,exclude: /(node_modules|bower_components)/,loader: 'babel-loader'},{test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,loader: 'url-loader',options: {limit: 10000,// publicPath: '/',// outputPath: 'images/',name: 'images/[name].[ext]?[hash]'}},// {// test: /\.m?js$/,// exclude: /(node_modules|bower_components)/,// use: {// loader: 'babel-loader',// options: {// presets: ['@babel/preset-env']// // plugins: ['@babel/plugin-transform-runtime']// }// }// }]},resolve: {extensions: ['.js', '.json', '.scss', '.css'],alias: {"@": path.resolve(__dirname, './src')}},plugins: [// new BundleAnalyzerPlugin(),new HtmlWebpackPlugin({title: '案例',template: 'index.html',inject: true,minify: {removeEmptyElements: true,minifyCSS: true,minifyJS: true}}),new MiniCssExtractPlugin({filename: "css/[name].css",chunkFilename: '[id].css'})]
};复制代码
webpack.env.config.js如下:
const webpack = require("webpack");
const merge = require('webpack-merge');
const baseWebapck = require('./webpack.base.config');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = merge(baseWebapck,{mode: 'development',plugins: [new webpack.HotModuleReplacementPlugin() // 使用webpack的热加载需要使用这个插件],devServer: {open: true,hot: true,host: 'localhost',port: 8080}
});// module.exports = new Promise((resolve, reject) => {
// resolve(devWebpackConfig)
// })复制代码
webpack.prod.config.js如下:
const path = require("path");
const webpack = require("webpack");
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const baseWebapck = require('./webpack.base.config');
const merge = require('webpack-merge');
module.exports = merge(baseWebapck, {mode: 'production',plugins: [new BundleAnalyzerPlugin() // 打包后自动打开浏览器看到打包的体积呈现],optimization: {splitChunks: {chunks: 'all',cacheGroups: {vendors: {test: /[\\/]node_modules[\\/]/,name: 'vendor', // 提取公共代码到vendorchunks: 'all'}}},minimizer: [new UglifyJsPlugin({uglifyOptions: {ie8: true,cache: true,parallel: true}})]}
});复制代码
笔记到此结束。另外想请教下各位packge.json "cross-env"和普通的打包有啥区别吗?
贴个告示:
本人姓名: xxxxx;
性别:女;
身高: 160cm;
体重:保密;
职业: 一枚专业的前端工程师;
外貌: 漂亮。
程序员小哥哥们,好的工作机会可留言的,欢迎内推。
webpack4.x配置相关推荐
- webpack4.0配置记录(2)
接上一篇webpack4.0配置记录(1),继续记录学习webpack配置. 定义环境变量 new Webpack.DefinePlugin({//用来定义全局环境变量DEV:JSON.stringi ...
- webpack4+react配置多页面移动端应用程序
webpack4+react配置多页面移动端应用程序 前言 技术栈 项目目录结构 移动端适配方案 webpack配置 基础配置 开发环境配置 react+redux热重载 生产环境配置 .babelr ...
- uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置
webpack说复杂也不复杂.不复杂,核心概念不外乎是entry, output, loader, plugins.webpack4还新增了optimization选项,用于代码分割和打包优化.现在w ...
- webpack4进阶配置
移动端CSS px自动转换成rem 需要两步来实现: px2rem-loader 在构建阶段将px转换成rem lib-flexible 页面渲染时动态计算根元素的font-size值(手机淘宝开源库 ...
- webpack4 入门配置研究
1. 全局安装 npm install webpack webpack-cli webpack-dev-server -g 1.1)输密文的密码(电脑开机) 1.2)安装成功 2. 输入命令mkdir ...
- vsc写vue生成基本代码快捷键_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置...
webpack说复杂也不复杂.不复杂,核心概念不外乎是entry, output, loader, plugins.webpack4还新增了optimization选项,用于代码分割和打包优化.现在w ...
- 手撸 webpack4.x 配置(一)
现在的前端开发框架 ,都绕不开 webpack 打包 . 但绝大数前端开发人员 基本都是用 脚手架 自动生成 一套开发环境 如: vue-cli , create-react-app等 , 但开发中 ...
- Vue SSR(Vue2 + Koa2 + Webpack4)配置指南
正如Vue官方所说,SSR配置适合已经熟悉 Vue, webpack 和 Node.js 开发的开发者阅读.请先移步 ssr.vuejs.org 了解手工进行SSR配置的基本内容. 从头搭建一个服务端 ...
- (超全)Vue.js学习笔记—webpack基础配置(webpack4+babel7+vue2)
webpack基础配置&&单文件组件与vue-loader 参考<Vue,js>实战(梁灏编著) 笔者近期学习Vue.js进阶篇,参考教程流程完成webpack.vue.b ...
最新文章
- 博士笔记 | 深入理解深度学习语义分割
- strstr php文档,php字符串函数学习之strstr()
- mysql延迟判断模板
- 剑指Offer - 面试题26. 树的子结构(双重递归)
- 2014-01-01
- java执行完main就结束了吗_为什么main方法中执行完第一个方法完之后,后面的代码都不执行了?...
- php include不可用,无法设置PHP include_path
- 基于JAVA+SpringMVC+Mybatis+MYSQL的仿百度网盘系统
- Web前端工作笔记002---json数据查询的方法_json查询大全,JsonSQL数据查询,jfunk数据查询
- 疫中行,程序员可在家免费学这些!
- 通过设置proxyTable实现调用接口跨域
- 2021牛客暑期多校训练营8,签到题ADEK
- Visual Studio中Debug与Release以及x86、x64、Any CPU的区别
- win10怎样更改系统字体_怎样用电脑光盘重装win10系统?电脑光盘重装系统步骤图文教程...
- 按键精灵 手机 oracle,按键精灵Android版:软件使用
- 微信小程序农历日期选择器 lunar-picker
- 怎么快速解决dns被劫持问题?
- InputNumber 数字输入框
- 创建ITable不能更新记录的问题
- 满分的一份软件测试工程师简历,凭什么?
热门文章
- 二十八、动态分区分配算法
- 人群密度估计--Generating High-Quality Crowd Density Maps using Contextual Pyramid CNNs
- 人群行为分析--Understanding Pedestrian Behaviors from Stationary Crowd Groups
- 【pytorch】torch.mean的使用
- ip转数字 java_Java IP地址转换和数字相互转换算法
- php5中魔术方法函数有哪几个,php中的类魔术方法有哪些
- Java课程主观题作业_JAVA课程作业01
- jpa 指定字段内容按照顺序排序(orderBy when then)
- java webservice接口开发_php开发webservice服务端接口(wsdl)
- ollections 库中常用的 4 个数据结构