总结下自己的配置的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配置相关推荐

  1. webpack4.0配置记录(2)

    接上一篇webpack4.0配置记录(1),继续记录学习webpack配置. 定义环境变量 new Webpack.DefinePlugin({//用来定义全局环境变量DEV:JSON.stringi ...

  2. webpack4+react配置多页面移动端应用程序

    webpack4+react配置多页面移动端应用程序 前言 技术栈 项目目录结构 移动端适配方案 webpack配置 基础配置 开发环境配置 react+redux热重载 生产环境配置 .babelr ...

  3. uglifyjs报错 webpack_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置

    webpack说复杂也不复杂.不复杂,核心概念不外乎是entry, output, loader, plugins.webpack4还新增了optimization选项,用于代码分割和打包优化.现在w ...

  4. webpack4进阶配置

    移动端CSS px自动转换成rem 需要两步来实现: px2rem-loader 在构建阶段将px转换成rem lib-flexible 页面渲染时动态计算根元素的font-size值(手机淘宝开源库 ...

  5. webpack4 入门配置研究

    1. 全局安装 npm install webpack webpack-cli webpack-dev-server -g 1.1)输密文的密码(电脑开机) 1.2)安装成功 2. 输入命令mkdir ...

  6. vsc写vue生成基本代码快捷键_基于vue2.X的webpack基本配置,教你手动撸一个webpack4的配置...

    webpack说复杂也不复杂.不复杂,核心概念不外乎是entry, output, loader, plugins.webpack4还新增了optimization选项,用于代码分割和打包优化.现在w ...

  7. 手撸 webpack4.x 配置(一)

    现在的前端开发框架 ,都绕不开 webpack 打包 . 但绝大数前端开发人员 基本都是用 脚手架 自动生成 一套开发环境 如: vue-cli  , create-react-app等 , 但开发中 ...

  8. Vue SSR(Vue2 + Koa2 + Webpack4)配置指南

    正如Vue官方所说,SSR配置适合已经熟悉 Vue, webpack 和 Node.js 开发的开发者阅读.请先移步 ssr.vuejs.org 了解手工进行SSR配置的基本内容. 从头搭建一个服务端 ...

  9. (超全)Vue.js学习笔记—webpack基础配置(webpack4+babel7+vue2)

    webpack基础配置&&单文件组件与vue-loader 参考<Vue,js>实战(梁灏编著) 笔者近期学习Vue.js进阶篇,参考教程流程完成webpack.vue.b ...

最新文章

  1. 博士笔记 | 深入理解深度学习语义分割
  2. strstr php文档,php字符串函数学习之strstr()
  3. mysql延迟判断模板
  4. 剑指Offer - 面试题26. 树的子结构(双重递归)
  5. 2014-01-01
  6. java执行完main就结束了吗_为什么main方法中执行完第一个方法完之后,后面的代码都不执行了?...
  7. php include不可用,无法设置PHP include_path
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的仿百度网盘系统
  9. Web前端工作笔记002---json数据查询的方法_json查询大全,JsonSQL数据查询,jfunk数据查询
  10. 疫中行,程序员可在家免费学这些!
  11. 通过设置proxyTable实现调用接口跨域
  12. 2021牛客暑期多校训练营8,签到题ADEK
  13. Visual Studio中Debug与Release以及x86、x64、Any CPU的区别
  14. win10怎样更改系统字体_怎样用电脑光盘重装win10系统?电脑光盘重装系统步骤图文教程...
  15. 按键精灵 手机 oracle,按键精灵Android版:软件使用
  16. 微信小程序农历日期选择器 lunar-picker
  17. 怎么快速解决dns被劫持问题?
  18. InputNumber 数字输入框
  19. 创建ITable不能更新记录的问题
  20. 满分的一份软件测试工程师简历,凭什么?

热门文章

  1. 二十八、动态分区分配算法
  2. 人群密度估计--Generating High-Quality Crowd Density Maps using Contextual Pyramid CNNs
  3. 人群行为分析--Understanding Pedestrian Behaviors from Stationary Crowd Groups
  4. 【pytorch】torch.mean的使用
  5. ip转数字 java_Java IP地址转换和数字相互转换算法
  6. php5中魔术方法函数有哪几个,php中的类魔术方法有哪些
  7. Java课程主观题作业_JAVA课程作业01
  8. jpa 指定字段内容按照顺序排序(orderBy when then)
  9. java webservice接口开发_php开发webservice服务端接口(wsdl)
  10. ollections 库中常用的 4 个数据结构