目錄
前言
webpack詳解
webpack4.0的配置
一、前端環境搭建
二、部署webpack
三、npm run build 發生了什麼
四、webpackp設定流程篇
首頁 web前端 js教程 對於webpack4.0配置的詳解

對於webpack4.0配置的詳解

Jul 13, 2018 pm 03:15 PM
vue.js webpack

這篇文章主要介紹了關於webpack4.0配置的詳解,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

前言

機會總是留給有準備的人,要想在這兵荒馬亂的求職季裡出類拔萃,拿下你心中期待已久的offer。那麼你更因該知道很多別人不知道的東西,你的羽翼才能豐滿,才能翱翔在天際。鷹擊長空,靠的不是天生,而是年少時斷崖之險。笨鳥先飛,靠的不是智慧,而是孜孜不倦的努力。

webpack詳解

webpack是一個打包工具,他的宗旨是一切靜態資源即可打包。有人就會問為什麼要webpack? webpack是現代前端技術的基石,常規的開發方式,例如jquery,html,css靜態網頁開發已經落後了。現在是MVVM的時代,資料驅動介面。 webpack將現代js開發中的各種新型有用的技術,集合打包。 webpack的描述鋪天蓋地,我就不浪費大家的時間了。理解下這種圖就知道webpack的生態圈了:
對於webpack4.0配置的詳解

webpack4.0的配置

const path = require('path');  //引入node的path模块
const webpack = require('webpack'); //引入的webpack,使用lodash
const HtmlWebpackPlugin = require('html-webpack-plugin')  //将html打包
const ExtractTextPlugin = require('extract-text-webpack-plugin')     //打包的css拆分,将一部分抽离出来  
const CopyWebpackPlugin = require('copy-webpack-plugin')
// console.log(path.resolve(__dirname,'dist')); //物理地址拼接
module.exports = {
    entry: './src/index.js', //入口文件  在vue-cli main.js
    output: {       //webpack如何输出
        path: path.resolve(__dirname, 'dist'), //定位,输出文件的目标路径
        filename: '[name].js'
    },
    module: {       //模块的相关配置
        rules: [     //根据文件的后缀提供一个loader,解析规则
            {
                test: /\.js$/,  //es6 => es5 
                include: [
                    path.resolve(__dirname, 'src')
                ],
                // exclude:[], 不匹配选项(优先级高于test和include)
                use: 'babel-loader'
            },
            {
                test: /\.less$/,
                use: ExtractTextPlugin.extract({
                    fallback: 'style-loader',
                    use: [
                    'css-loader',
                    'less-loader'
                    ]
                })
            },
            {       //图片loader
                test: /\.(png|jpg|gif)$/,
                use: [
                    {
                        loader: 'file-loader' //根据文件地址加载文件
                    }
                ]
            }
        ]                  
    },
    resolve: { //解析模块的可选项  
        // modules: [ ]//模块的查找目录 配置其他的css等文件
        extensions: [".js", ".json", ".jsx",".less", ".css"],  //用到文件的扩展名
        alias: { //模快别名列表
            utils: path.resolve(__dirname,'src/utils')
        }
    },
    plugins: [  //插进的引用, 压缩,分离美化
        new ExtractTextPlugin('[name].css'),  //[name] 默认  也可以自定义name  声明使用
        new HtmlWebpackPlugin({  //将模板的头部和尾部添加css和js模板,dist 目录发布到服务器上,项目包。可以直接上线
            file: 'index.html', //打造单页面运用 最后运行的不是这个
            template: 'src/index.html'  //vue-cli放在跟目录下
        }),
        new CopyWebpackPlugin([  //src下其他的文件直接复制到dist目录下
            { from:'src/assets/favicon.ico',to: 'favicon.ico' }
        ]),
        new webpack.ProvidePlugin({  //引用框架 jquery  lodash工具库是很多组件会复用的,省去了import
            '_': 'lodash'  //引用webpack
        })
    ],
    devServer: {  //服务于webpack-dev-server  内部封装了一个express 
        port: '8080',
        before(app) {
            app.get('/api/test.json', (req, res) => {
                res.json({
                    code: 200,
                    message: 'Hello World'
                })
            })
        }
    }
    
}
登入後複製

一、前端環境搭建

我們使用npm或yarn來安裝webpack

npm install webpack webpack-cli -g 
# 或者 
yarn global add webpack webpack-cli
登入後複製

為什麼webpack會分成兩個檔案?在webpack3中,webpack本身和它的cli以前都是在同一個套件中,但在第4版中,他們已經將兩者分開來更好地管理它們。

新建一個webpack的資料夾,在其下新建一個try-webpack(防止init時專案名稱和安裝套件同名)並初始化和設定webpack。

 npm init -y  //-y 默认所有的配置
 yarn add webpack webpack-cli -D  //-D webpack安装在devDependencies环境中
登入後複製

二、部署webpack

在上面搭建好的環境專案中,我們來到package.json裡設定我們的scripts,讓webpack

  "scripts": {
    "build": "webpack --mode production" //我们在这里配置,就可以使用npm run build 启动我们的webpack
  },
  "devDependencies": {
    "webpack": "^4.16.0",
    "webpack-cli": "^3.0.8"
  }
登入後複製

配置好我們webpack的運行環境時,聯想下vue-cli。平常使用vue-cli會自動幫我們設定並產生專案。我們在src下進行專案的開發,最後npm run build 打包產生我們的dist的目錄。不知道你是否還記得,還是讓我們進入下一節讓我們感受下這其中的正個流程吧。

三、npm run build 發生了什麼

在我們的根專案下try-webpack新建一個src目錄。在src目錄下新建一個index.js檔。在裡面我們可以寫任意的程式碼,以案例為主:

const a = 1;

#寫完之後我們在終端機運行我們的命令npm run build;你會發現新增加了一個dist目錄,裡面存放著webpack打包好的main.js檔。這和我們在vue-cli裡操作是一樣的。

四、webpackp設定流程篇

我們在開發是一般會打包src下的什麼檔案呢?我們可以回想一下,其實vue-cli專案src下不就這幾點嘛:

  • #發佈時需要的html,css,js

  • css預編譯器stylus,less,sass

  • es6的高階語法

  • 圖片資源.png,.gif,.ico, .jpg

  • 檔案間的require

  • #別名@等修飾符

##那麼我將會分這幾點來講解webpack中webpack.config.js的配置,跟著腳步,一步一步來完成我們的流程的線。

✍️Html在webpack中的配置

在專案的根目錄try-webpack下新建webpack.config.js文件,以commonJS模組化機制向外輸出,並且新建一個index. html。

module.exports = {}
配置我們的入口entry,在vue-cli裡相當於跟目錄下的main.js,我們的出口output。我們可以把webpack理解為一個工廠,進入相當於把各種各樣的原料放進我們的工廠了,然後工廠進行一系列的打包操作把打包好的東西,向外輸出,然後就可以去出售了(上線)。

const path = require('path'); //引入我们的node模块里的path
//测试下 console.log(path.resolve(__dirname,'dist')); //物理地址拼接
module.exports = {
    entry: './src/index.js', //入口文件  在vue-cli main.js
    output: {       //webpack如何向外输出
        path: path.resolve(__dirname, 'dist'),//定位,输出文件的目标路径
        filename: '[name].js' //文件名[name].js默认,也可自行配置
    },
登入後複製
HTML打包我們需要安裝引入html-webpack-plugin

yarn add html-webpack-plugin -D //在开发环境中安装
const HtmlWebpackPlugin = require('html-webpack-plugin')  //引入打包我们的HTML
登入後複製
在module.exports裡配置我們的plugins(插件):

 plugins: [  //插进的引用, 压缩,分离美化
        new HtmlWebpackPlugin({  //将模板的头部和尾部添加css和js模板,dist 目录发布到服务器上,项目包。可以直接上线
            file: 'index.html', //打造单页面运用 最后运行的不是这个
            template: 'src/index.html'  //vue-cli放在跟目录下
        }),
    ],
登入後複製
配置好後,在終端輸入npm run dev後webpack將我們的html打包好並且自動將我們的js引進了。

    <p>Hello World</p>
<script></script>
登入後複製
live-sever我們的dist目錄,啟動一個8080端口,我們就可以看到我們的Hello World了。這就是我們上線版的頁面。

以上是對於webpack4.0配置的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

深入探討vite是怎麼解析.env檔的 深入探討vite是怎麼解析.env檔的 Jan 24, 2023 am 05:30 AM

使用vue框架開發前端專案時,我們部署的時候都會部署多套環境,往往開發、測試以及線上環境呼叫的介面網域都是不一樣的。如何能做到區分呢?那就是使用環境變數和模式。

VUE3入門教學:使用Webpack進行打包和構建 VUE3入門教學:使用Webpack進行打包和構建 Jun 15, 2023 pm 06:17 PM

Vue是一款優秀的JavaScript框架,它可以幫助我們快速建立互動性強、高效性好的Web應用程式。 Vue3是Vue的最新版本,它引入了許多新的功能和功能。 Webpack是目前最受歡迎的JavaScript模組打包器和建置工具之一,它可以幫助我們管理專案中的各種資源。本文就為大家介紹如何使用Webpack打包和建構Vue3應用程式。 1.安裝Webpack

圖文詳解如何在Vue專案中整合Ace程式碼編輯器 圖文詳解如何在Vue專案中整合Ace程式碼編輯器 Apr 24, 2023 am 10:52 AM

Ace 是一個用 JavaScript 寫的可嵌入程式碼編輯器。它與 Sublime、Vim 和 TextMate 等原生編輯器的功能和效能相符。它可以很容易地嵌入到任何網頁和 JavaScript 應用程式中。 Ace 被維護為Cloud9 IDE的主要編輯器 ,並且是 Mozilla Skywriter (Bespin) 專案的繼承者。

探討如何在Vue3中撰寫單元測試 探討如何在Vue3中撰寫單元測試 Apr 25, 2023 pm 07:41 PM

在當今前端開發中,Vue.js 已經成為了一個非常流行的框架。隨著 Vue.js 的不斷發展,單元測試變得越來越重要。今天,我們將探討如何在 Vue.js 3 中編寫單元測試,並提供一些最佳實踐和常見的問題及解決方案。

Vue中JSX語法和模板語法的簡單比較(優劣勢分析) Vue中JSX語法和模板語法的簡單比較(優劣勢分析) Mar 23, 2023 pm 07:53 PM

在Vue.js中,開發人員可以使用兩種不同的語法來建立使用者介面:JSX語法和範本語法。這兩種文法各有優劣,以下就來探討它們的差異和優劣勢。

深入聊聊vue3中的reactive() 深入聊聊vue3中的reactive() Jan 06, 2023 pm 09:21 PM

前言:在vue3的開發中,reactive是提供實現響應式資料的方法。日常開發這個是使用頻率很高的api。這篇文章筆者就來探索其內部運作機制。

淺析vue怎麼實現檔案切片上傳 淺析vue怎麼實現檔案切片上傳 Mar 24, 2023 pm 07:40 PM

在實際開發專案過程中有時候需要上傳比較大的文件,然後呢,上傳的時候相對來說就會慢一些,so,後台可能會要求前端進行文件切片上傳,很簡單哈,就是把比如說1個G的檔案流切割成若干個小的檔案流,然後分別請求介面傳遞這個小的檔案流。

vite和webpack的差別是什麼 vite和webpack的差別是什麼 Jan 11, 2023 pm 02:55 PM

差異:1、webpack伺服器啟動速度比vite慢;由於vite啟動的時候不需要打包,也就不需要分析模組依賴、編譯,所以啟動速度非常快。 2.vite熱更新比webpack快;vite在HRM方面,當某個模組內容改變時,就讓瀏覽器去重新請求該模組即可。 3.vite用esbuild預先建置依賴,而webpack基於node。 4.vite的生態不如webpack,載入器、插件不夠豐富。

See all articles