學習webpack4 - 基礎配置
學習webpack4 - HTML處理
學習webpack4 - 樣式處理
學習webpack4 - ES6語法轉化
學習webpack4 - 第三方庫的使用
學習webpack4 - 抽離公共代碼css
...持續中html
=======================================================node
注意:開始以前如下內容以前,須要配置一些webpack的基礎配置,傳送門:學習webpack4.x - 基礎配置webpack
當前目錄結構爲:web
require('./index.css'); require('./index.scss');
let path = require('path'); let HtmlWebpackPlugin = require('html-webpack-plugin'); let MiniCssExtractPlugin = require('mini-css-extract-plugin'); //抽離CSS let OptimizeCssPlugin = require('optimize-css-assets-webpack-plugin'); //優化項,好比壓縮css等 let UglifyJsPlugin = require('uglifyjs-webpack-plugin'); //壓縮js module.exports = { // mode: 'development', //優化項配置 optimization: { minimizer: [ new OptimizeCssPlugin(), new UglifyJsPlugin({ cache: true, //緩存 parallel: true, //併發打包 sourceMap: true //源碼映射便於調試 }) ] }, //開一個本地服務 devServer: { port: 3000, //端口號 progress: true, //進度條 contentBase: './dist', //指定目錄運行服務 open: true //自動打開瀏覽器 }, entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }, // 模塊配置 module: { rules: [{ test: /\.(css|scss)$/, use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader', 'sass-loader'] }] }, //插件配置 plugins: [ new HtmlWebpackPlugin({ template: './src/index.html', //原始文件 filename: 'index.html', //打包後的文件名稱 hash: true, //hash }), new MiniCssExtractPlugin({ filename: 'main.css' //抽離出的css文件名稱 }) ] }
{ "name": "webpack", "version": "1.0.0", "main": "index.js", "license": "MIT", "scripts": { "dev": "webpack --mode development && webpack-dev-server", "build": "webpack --mode production" }, "devDependencies": { "autoprefixer": "^9.4.7", "css-loader": "^2.1.0", "html-webpack-plugin": "^3.2.0", "less": "^3.9.0", "less-loader": "^4.1.0", "mini-css-extract-plugin": "^0.5.0", "node-sass": "^4.11.0", "optimize-css-assets-webpack-plugin": "^5.0.1", "postcss-loader": "^3.0.0", "sass-loader": "^7.1.0", "style-loader": "^0.23.1", "uglifyjs-webpack-plugin": "^2.1.1", "webpack": "^4.29.4", "webpack-cli": "^3.2.3", "webpack-dev-server": "^3.1.14", "webpack-html-plugin": "^0.1.1" } }
step1: 打開src/index.js,輸入:npm
const fn = () => { console.log('丸子'); } fn ();
step2: 配置webpack.config.js文件:json
將ES6轉成ES5,須要babel-loader,配置規則爲:segmentfault
module.exports = { //... module: { //... { test: /\.js$/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env'] // 根據目標瀏覽器自動轉換爲相應es5代碼 } } } } };
step3: 安裝插件:瀏覽器
yarn add babel-loader @babel/core @babel/preset-env -D
嘗試運行: npm run dev, 成功!以下圖:緩存