webpack注意事項

本文所有代碼都在GitHub

npx webpack 打包命令

注意,webpack 不會更改代碼中除 import 和 export 語句以外的部分。如果你在使用其它 ES2015 特性,請確保你在 webpack 的 loader 系統中使用了一個像是 Babel 或 Bublé 的轉譯器

如果 webpack.config.js 存在,則 webpack 命令將默認選擇使用它。

  • css文件打包模塊 

npm install --save-dev style-loader css-loader

  • 靜態文件打包(圖片),包括css中的背景圖片

npm install --save-dev file-loader

  • index.html中動態引入打包文件,需要配置webpack.config.js 多入口管理

npm install --save-dev html-webpack-plugin

plugins:[
    new HtmlWebpackPlugin({
        title: 'Output Management'
    })
],

html-webpack-plugin 會自動生成一個index.html

  • 自動清理dist文件 清理輸出目錄

npm install clean-webpack-plugin --save-dev

plugins:[
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin({
        title: 'Output Management'
    })
],
  • js錯誤信息定位:開發環境需要調試,不能使用壓縮的js文件需要配置項
devtool:'inline-source-map',//js報錯定位
  • 開發用的簡單便捷的編譯方式

以下是主要命令

"watch": "webpack --watch",
"start": "webpack-dev-server --open",
"server": "node server.js"

後兩個需要安裝相應的包

npm install --save-dev webpack-dev-server

npm install --save-dev express webpack-dev-middleware

  • 第一階段的配置文件webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const webpack = require('webpack');

module.exports = {
    // entry:'./src/index.js',
    entry:{
        // app:'./src/index.js',
        // print:'./src/print.js',
        app: './src/index.js'
    },
    devtool:'inline-source-map',//js報錯定位
    devServer:{
        contentBase:'./dist',
        hot:true,//熱加載模塊
    },
    plugins:[
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin({
            title: 'Output Management'
        }),
        new webpack.NamedModulesPlugin(),//按import加載模塊,這樣入口就變成一個了
        new webpack.HotModuleReplacementPlugin()
    ],
    output:{
        // filename:'bundle.js',
        filename:'[name].bundle.js',
        path:path.resolve(__dirname,'dist')
    },
    mode:'production',//壓縮打包js
    //文件打包規則
    // module:{
    //     rules:[
    //         {
    //             test:/\.css$/,
    //             use:[
    //                 'style-loader',
    //                 'css-loader'
    //             ]
    //         },
    //         {
    //             test:/\.(png|svg|jpg|gif)$/,
    //             use:[
    //                 'file-loader'
    //             ]
    //         },
    //         {
    //             test:/\.(woff|woff2|eot|ttf|otf)$/,
    //             use:[
    //                 'file-loader'
    //             ]
    //         },
    //         {
    //             test:/\.(csv|tsv)$/,
    //             use:[
    //                 'csv-loader'
    //             ]
    //         },
    //         {
    //             test:/\.xml$/,
    //             use:[
    //                 'xml-loader'
    //             ] 
    //         }
    //     ]
    // }
}

對應的package.json

{
  "name": "webpack-demo",
  "sideEffects": true,
  "version": "1.0.0",
  "description": "",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "watch": "webpack --watch",
    "start": "webpack-dev-server --open",
    "server": "node server.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "clean-webpack-plugin": "^3.0.0",
    "css-loader": "^3.2.0",
    "csv-loader": "^3.0.2",
    "express": "^4.17.1",
    "file-loader": "^4.2.0",
    "html-webpack-plugin": "^3.2.0",
    "style-loader": "^1.0.0",
    "webpack": "^4.40.2",
    "webpack-cli": "^3.3.9",
    "webpack-dev-middleware": "^3.7.1",
    "webpack-dev-server": "^3.8.1",
    "webpack-merge": "^4.2.2",
    "xml-loader": "^1.2.1"
  },
  "dependencies": {
    "lodash": "^4.17.15"
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章