【W(wǎng)ebpack】2.四個(gè)核心概念及使用

webpack 中的四個(gè)核心概念 (Demo2 Source

  • Entry 入口
  • Output 輸出
  • Loaders
  • Plugins 插件

??webpack 中默認(rèn)的配置文件名稱是 webpack.config.js,因此我們需要在項(xiàng)目中創(chuàng)建如下文件結(jié)構(gòu):

.        
├── index.html            // 顯示的頁(yè)面
├── main.js              // webpack 入口 
├── webpack.config.js   //  webpack 中默認(rèn)的配置文件
└── bundle.js          //  通過 webpack 命令生成的文件,無(wú)需創(chuàng)建

entry 入口

??入口起點(diǎn)(entry point)指示 webpack 應(yīng)該使用哪個(gè)模塊,來(lái)作為構(gòu)建其內(nèi)部依賴圖的開始。進(jìn)入入口起點(diǎn)后。 webpack 會(huì)找出有哪些模塊和庫(kù)是入口起點(diǎn)(直接和間接)依賴的。

??可以在 webpack.config.js 中 配置 entry 屬性,來(lái)指定一個(gè)入口或多個(gè)起點(diǎn)入口,代碼如下:

    moudle.exports = {
        entry: './path/file.js'
    };

output 輸出

?? output 屬性告訴 webpack 在哪里輸出它所創(chuàng)建的 bundles,以及如何命名這些文件。你可以通過在配置指定一個(gè) output 字段,來(lái)配置這些過程:

    const path = require('path');
    
    moudle.exports = {
        entry: './path/file.js',
        output:{
            path: path.resolve(__dirname,'dist'),
            filename: 'my-webpack.bundle.js'
        }
    }

??其中 output.path 屬性用于指定生成文件的路徑,output.filename 用于指定生成文件的名稱。

Loaders

?? Loaderswebpack 能夠去處理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader 可以將所有類型的文件轉(zhuǎn)換為 webpack 能夠處理的有效模塊,然后可以利用 webpack 的打包能力,對(duì)它們進(jìn)行處理。

??本質(zhì)上,webpack loader 將所有類型的文件,轉(zhuǎn)換為應(yīng)用程序的依賴圖可以直接引用模塊。在更高層面上,在 webpack 的配置中 loader 有兩個(gè)目標(biāo):

  1. 識(shí)別應(yīng)該被對(duì)應(yīng)的 loader 進(jìn)行轉(zhuǎn)換的那些文件(使用 test 屬性)
  2. 轉(zhuǎn)換這些文件,從而使其能夠被添加到依賴圖中(并且最終添加到 bundle 中)(use 屬性)

??在開始下面的代碼之前,我們需要安裝 style-loadercss-loader

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

并在項(xiàng)目中創(chuàng)建 style.css 樣式文件:

    h1{ color: red; }

??然后在 webpack.config.js 中輸入以下代碼:

    const path = require('path');
    
    module.export = {
        entry: './main.js',
        output: {
            path: path.resolve(__dirname,'dist'),
            filename: 'bundle.js'
        },
        module: {
            rules:[
                { 
                    test: /\.css$/, 
                    use: [
                        { loader: 'style-loader' },
                        { loader: 'css-loader' }
                    ]
                }
            ]
        }
    };

Plugins 插件

?? Loaders 被用于轉(zhuǎn)換某些類型的模塊,而插件則可以用于執(zhí)行范圍更廣的任務(wù)。插件的范圍包括,從打包優(yōu)化和壓縮,一直到重新定義環(huán)境中的變量。

??想要使用一個(gè)插件,需要 require() 它,然后把它添加到 Plugins 數(shù)組中,多數(shù)插件可以通過選項(xiàng)自定義。也可以在一個(gè)配置文件中因?yàn)椴煌康亩啻问褂猛粋€(gè)插件,這時(shí)需要通過使用 new 操作符來(lái)創(chuàng)建它的實(shí)例。

??在開始下面的代碼之前,我們需要安裝 html-webpack-plugin 插件:

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

它可以簡(jiǎn)化HTML文件的創(chuàng)建,為您的webpack包提供服務(wù)。

??然后在 webpack.config.js 中輸入以下代碼:

    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const path = require('path');
    
    const config = {
        entry: './main.js',
        output: {
            path: path.resolve(__dirname,'dist'),
            filename: 'bundle.js'
        },
        module: {
            rules:[
                { 
                    test: /\.css$/, 
                    use: [
                        { loader: 'style-loader' },
                        { loader: 'css-loader' }
                    ]
                }
            ]
        },
        plugins: [
            new HtmlWebpackPlugin({ template: './index.html' })
        ]
    };
    
    module.exports = config;

運(yùn)行與配置

?? 最后我們可以直接通過 webpack 命令編譯打包,如果想要在其命令后加入?yún)?shù),可以通過配置 package.json 文件中的 scripts 屬性:

    {
        scripts: {
            "build": "webpack --config webpack.config.js --progress --display-modules"
        }
    }

當(dāng)然如果你想要更改默認(rèn)的配置文件名稱,可以將 --config 后面的 webpack.config.js 配置文件名改為你自定義的名稱。

??通過以下命令執(zhí)行:

    $ npm run build
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 webpack介紹和使用 一、webpack介紹 1、由來(lái) ...
    it筱竹閱讀 11,446評(píng)論 0 21
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng),為了節(jié)省你的閱讀時(shí)間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,874評(píng)論 7 110
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,662評(píng)論 2 71
  • 目錄第1章 webpack簡(jiǎn)介 11.1 webpack是什么? 11.2 官網(wǎng)地址 21.3 為什么使用 web...
    lemonzoey閱讀 1,816評(píng)論 0 1
  • 行于世,當(dāng)識(shí)人,然識(shí)人不必探盡,探盡則多怨;當(dāng)知人,然知人不必言盡,言盡則無(wú)友;當(dāng)責(zé)人,然責(zé)人不必苛盡,苛盡則眾遠(yuǎn)...
    Applestar英語(yǔ)老師閱讀 149評(píng)論 0 0

友情鏈接更多精彩內(nèi)容