webpack4.x 各項簡單配置

webpack4.x 各項簡單配置

1.webpacks是什麼?

是模塊打包機,分析目錄結構,找到js模塊(包括了瀏覽器不能直接識別的代碼如,typescript、sass),打包成合適的格式,供遊覽器訪問。

優勢:模塊打包,和構建項目
打包的優勢:

  • 1.模塊化,拆分了業務的複雜的js代碼
  • 2.js擴展了==》基於原型==》基於class(typescript,es6)
    面試:webpack、grunt、gulp不同:grunt、gulp優化流程的工具,webpack模塊化支持工具,兼有優化流程功能

2.webpack4.x安裝

  • 1.先全局安裝 npm install webpack -g ;npm install webpack-cli -g
  • 2.再npm init 生成package.json
  • 3.局部安裝
    npm install webpack -S
    npm install webpack-cli S
  • 4.webpack –mode production(生產環境)
    webpack –mode development(開發環境)

3.配置
1.webpack四個核心概念
入口(entry)
輸出(output)

  • loader:

       webpack支持js,不支持css和html,讓webpack支持,則需要loader
       而palugins可以有效打包或壓縮css,js,html,圖片。
    
  • 插件(plugins)

    [默認配置
    sr
    index.js
    dist
    main.js]

    2.配置文件

  • 1.DevServe

r

  首先是安裝devserver:npm install webpack-dev-server -D;

  然後在webpack.config.js中配置

    devServer:{

      contentBase:"./public",//選擇服務器路徑,即服務器根目錄選擇

      host:'localhost',//服務器地址

      port:"3000",//端口

      inline:true//實時刷新

    }
  • 2.在package.json

    配置:

    “scripts”: {

    "start": "webpack-dev-server --open"//webpack-dev-server --open --inline(這個也是可以的,做到實時刷新)
    

    },

    3.loader:加載程序

    1.引入css需要

     style-loader css-loader
    
     安裝:npm install style-loader css-loader -D(s);
    
     同時css若有圖片加載,光有style-loader,和css-loader還不行,還需要有file-loader
    
        file-loader安裝:install file-loader -D
    
      2.loader配置
    
        module: {
    
            rules: [
    
              { test: /\.css$/, use:['style-loader','css-loader'] },//正則,表示後綴爲css的文件
    
              { test: /(\.jpg|\.png|\.jpeg|\.gif)$/, use:['file-loader']}//同理......
    
            ]
    
        }
    
    3.html-withimg-loader
    
      使得打包的html支持圖片
    
      安裝:npm install html-withimg-loader -D(S);
    
      配置:{test:/\.html$/,use:'html-withimg-loader'}
    
    4.字體圖標
    
       使用的是file-loader
    
       配置:{test: /\.(woff|ttf|svg|eot|xttf|woff5)$/, use:'file-loader?limit=1024&name=./fonts/[name].[ext]'}//後面的參數,limit是限制文件大小,name是指定打包到哪個文件,同時指明打包文件名字,類型
    
  • 4.插件

    html-webpack-plugin

    src:一般是開發階段

    public:一般是生產階段[一般這2個階段文件要對應]

    1.安裝 html-webpack-plugin
    
       安裝命令:npm install html-webpack-plugin -D(S)
    
    2.配置html-webpack-plugin
    
      第一步:引入html-webpack-plugin== >const HtmlWebpackPlugin = require('html-webpack-plugin');
    
      第二步:配置
    
              plugins: [
    
                  //new webpack.optimize.UglifyJsPlugin(),
    
                  new HtmlWebpackPlugin({
    
                      template: './src/index.html',
    
                      filename: 'a.html'//改html的輸出文件名index.html改爲了a.hmtl,
    
                      minify:{
    
                          removeAttributeQuotes:true,//去除引號
    
                          removeComments:true//去除註釋
    
                          removeEmptyAttributes:true//去除空屬性
    
                          collapseWhitespace:true//去除空格
    
                      }
    
                  })
    
              ]
    
  • 5.css提取

    插件下載:npm intall extract-text-webpack-plugin@next -D(s);
    
    const ExtractTextPlugin=require("extract-text-webpack-plugin")
    
    配置
    
        new ExtractTextPlugin('./css/[name].css');
    
        同時要對style-loader和css.loader進行改造==>
    
           module: {
    
            rules: [
    
              { test: /\.css$/, use:ExtractTextPlugin.extract({
    
                fallback:'style-loader',
    
                use:[{
    
                  loader:'css-loader?name=./css/[name].[ext]',
    
                  options:{
    
                    minimize:true,//代碼壓縮
    
                  }
    
                }],
    
                publicPath;"../"
    
              })},
    
            ]
    
          },              
    
  • 6.babel

    核心:babel-core
    
    功能:babel-loader babel-preset-env babel-preset-react
    
    安裝:npm install babel-core babel-loader babel-preset-env babel-preset-react -S
    
    配置(一):
    
    
    
        {
    
          test:/\.(jsx|js)$/,
    
          use:{
    
            loader:'babel-loader',
    
            options:{
    
              presets:['env','react']
    
            }
    
          },
    
          exclude:/node_modules/ //排除不編譯node_modules文件        
    
        }
    
    配置(二):
    
        在根目錄下建一個.babelrc文件
    
           再在其文件中寫人{"presets":['env','react']}
    
           在webpack.config.js下寫入:
    
        {
    
          test:/\.(jsx|js)$/,
    
          use:{
    
            loader:'babel-loader'
    
          },
    
          exclude:/node_modules/ //排除不編譯node_modules文件        
    
        }
    
  • 7.引入第三方文件

      在4.0中極大簡化了配置。
    
      (1)安裝jq:npm install jquery -D
    
      (2)在入口js文件 import $ from 'jquery';即可,非常簡單
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章