1. 程式人生 > >webpack 4.x一起學習(一)

webpack 4.x一起學習(一)

最近在學習webpack第四個版本,相比大改版肯定有諸多不同,這邊進行重新學習順便排排BUG

安裝過程中難免有點慢,但是npm是慢 cnpm又可能出錯
npm install -g chajian --registry=http://registry.npm.taobao.org 推薦此方法安裝
npm init -y 初始化
npm install -D webpack webpack-cli --registry=http://registry.npm.taobao.org 4版本要求安裝webpack-cli 我們一步到位

安裝好之後可以通過 webpack -v 檢視版本號

建立webpack.config.js配置檔案

大家可以根據我的目錄進行測試webpack,也可以自行配置

index.js 注意js引入 此處是未生成的 待會我將要生成的js

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>webpack</title>
    </head>
    <body>
        <div id="title"></div>
        <script src="./../dist/bundle.js"></script>  =>引入我們即將通過webpack生成的js檔案
    </body>
    </html>

entry.js寫的簡單一點 就一句程式碼

document.getElementById('title').innerHTML='Hello Webpack';

配置webpack.config.js 這個大家可能有點陌生 ,介紹一下基本配置

    module.exports={
        //入口檔案的配置項
        entry:{},
        //出口檔案的配置項
        output:{},
        //模組:例如解讀CSS,圖片如何轉換,壓縮
        module:{},
        //外掛,用於生產模版和各項功能
        plugins:[],
        //配置webpack開發服務功能
        devServer:{}
    }

這裡我用了3版本的配置 後續會跟進

來配置一下初步打包轉換

entry選項(入口配置)

這個選項就是配置我們要壓縮的檔案一般是JavaScript檔案(當然也可以是CSS……)。這裡要填寫的是src目錄下的entry.js檔案。

output選項(出口配置)

出口配置是用來告訴webpack最後打包檔案的地址和檔名稱的,根據我們的配置應該打包到dist目錄下

    module.exports={
        //入口檔案的配置項
        entry:{
            //裡面的entery是可以隨便寫的
            entry:'./src/entry.js'
        },
        //出口檔案的配置項
        output:{
            //打包的路徑文職
            path:path.resolve(__dirname,'dist'),
            //打包的檔名稱
            filename:'bundle.js'
        },
        //模組:例如解讀CSS,圖片如何轉換,壓縮
        module:{},
        //外掛,用於生產模版和各項功能
        plugins:[],
        //配置webpack開發服務功能
        devServer:{}
    }

webpack 打包的命令很簡單 就是webpack 接下來我們來打包一下


很顯然我們失敗了 這裡有個錯誤就是 path is not defined 我們這邊需要引入一下path

   const path = require('path') =>在頭部 引入path
   module.exports={
        //入口檔案的配置項
        entry:{
            //裡面的entery是可以隨便寫的
            entry:'./src/entry.js'
        },
        //出口檔案的配置項
        output:{
            //打包的路徑文職
            path:path.resolve(__dirname,'dist'),
            //打包的檔名稱
            filename:'bundle.js'
                    },
        //模組:例如解讀CSS,圖片如何轉換,壓縮
        module:{},
        //外掛,用於生產模版和各項功能
        plugins:[],
        //配置webpack開發服務功能
        devServer:{}
    }

好 我們再webpack一下 此時我們將會成功

dist目錄下自動生成了bundle.js 檔案 你可以開啟看一下啊 根本看不懂 這是打包之後的檔案,但是我們開啟瀏覽器執行html的時候,裡面會出現內容,就說明這個js是可以使用的

此時我們刪掉生成的js 配置一下mode屬性

   const path = require('path')
   module.exports={
        mode: 'development', =>預設配置是 ‘production(生產環境)’
        //入口檔案的配置項
        entry:{
            //裡面的entery是可以隨便寫的
            entry:'./src/entry.js'
        },
        //出口檔案的配置項
        output:{
            //打包的路徑文職
            path:path.resolve(__dirname,'dist'),
            //打包的檔名稱
            filename:'bundle.js'
                    },
        //模組:例如解讀CSS,圖片如何轉換,壓縮
        module:{},
        //外掛,用於生產模版和各項功能
        plugins:[],
        //配置webpack開發服務功能
        devServer:{}
    }

此時我們再webpack 一下 可以做個對比 有什麼不同(此處不演示)

給大家介紹一下配置中的 _dirname

其實path.resolve(__dirname,’dist’)就是獲取了專案的絕對路徑 我給大家演示一下

在dist下新建dirname.js檔案 程式碼如下

const path =require('path')
console.log(path.resolve(__dirname,'dist'))

然後我們在下面輸入命令 cd dist 然後 node dirname.js

可以看到輸出來的 是dist的路徑

到這裡就是webpack最基本的配置了,希望小夥伴多練練,不練也多看看

多入口、多出口配置

在src下新建一個js 內容隨意 刪除dist目錄下的所有js

   const path = require('path')
   module.exports={
        mode: 'development',
        //入口檔案的配置項
        entry:{
            //裡面的entery是可以隨便寫的
            entry:'./src/entry.js',
             =>這裡我們又引入了一個入口檔案
            entry2:'./src/entry2.js'
        },
        //出口檔案的配置項
        output:{
            //打包的路徑文職
            path:path.resolve(__dirname,'dist'),
            //打包的檔名稱
            filename:'[name].js'  =>注意此處 使用[name].js  表示打包出的檔名與進入名相同
                                          =>也就是即將打包出 entry.js 與entry2.js 在dist下
         },
        //模組:例如解讀CSS,圖片如何轉換,壓縮
        module:{},
        //外掛,用於生產模版和各項功能
        plugins:[],
        //配置webpack開發服務功能
        devServer:{}
    }

改動一下index中的引入檔案

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>webpack</title>
    </head>
    <body>
        <div id="title"></div>
        <script src="./entry.js"></script>  引入發生了改變
        <script src="./entry2.js"></script>

    </body>
    </html

接下來webpack打包一下

此時dist下已生成了js檔案兩個 說明我們成功了

如果你成功了 就已經入門咯