webpack 單入口項(xiàng)目基礎(chǔ)配置教程(四)

這次我們來(lái)處理一下 解析 ES6 和 react 的需求

首先要安裝三個(gè)插件

yarn add babel-core babel-loader babel-preset-stage-1 babel-preset-env --dev
  • babel-core 這個(gè)插件是 babel 編譯器的核心, 包含了 Node API 和 require 鉤子
  • babel-loader 是具體的編譯插件
  • babel-preset-env 是一個(gè)集成各種編譯插件的新插件, 以前我們有 babel-preset-es2015塞俱、babel-preset-es2016 等等亂七八糟的編譯插件, 現(xiàn)在一個(gè) babel-preset-env就搞定了 (但是不包括 polyfill 和 react)

裝好以后我們?nèi)バ薷南?webpack.config.js 文件

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    entry: './src/app.js',
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'app.js'
    },
+    module: {
+        rules: [
+            {
+                test: /\.js$/,
+                exclude: /(node_modules)/,
+                use: {
+                    loader: 'babel-loader',
+                    options: {
+                        presets: ['env', 'stage-1', 'react']
+                    }
+                }
+            }
+        ]
+    },
    plugins: [
        new HtmlWebpackPlugin({
            title: 'MY-WEBPACK',
            template: './src/index.html'
        })
    ]
};

這里要詳細(xì)解釋超出我能力范圍了 只要大概了解一下就行

  • module -> rules 這個(gè)數(shù)組里可以配置多個(gè)對(duì)象, 每個(gè)對(duì)象都是針對(duì)某種類型的文件應(yīng)用一個(gè) loader
  • 這次我們?cè)?rules 里只配置了一個(gè)對(duì)象
  • test 屬性使用正則指定了我們針對(duì)所有的 js 文件進(jìn)行處理
  • exclude 屬性說(shuō)明了 node_modules 下的 js 文件不做處理
  • use -> loader 指定了 babel-loader 這個(gè) loader 來(lái)處理 js 文件
  • use -> options 設(shè)置了這個(gè) loader 運(yùn)用一個(gè)什么樣的方式來(lái)進(jìn)行處理 js 文件

那么 解析 ES6 的需求這里實(shí)際上已經(jīng)基本完成了

我們繼續(xù)處理下 react 語(yǔ)法 (jsx)

yarn add babel-preset-react --dev

看這個(gè)名字也知道是用來(lái)處理 react

然后我們?cè)傩薷南?webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    entry: './src/app.js',
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'app.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /(node_modules)/,
                use: {
                    loader: 'babel-loader',
                    options: {
+                        presets: ['env', 'es2015', 'react']
                    }
                }
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: 'MY-WEBPACK',
            template: './src/index.html'
        })
    ]
};

接著在我們的項(xiàng)目里安裝下 react 來(lái)驗(yàn)證

yarn add react react-dom

這次安裝沒(méi)加 --dev 這里提一下

加 --dev 是你開(kāi)發(fā)時(shí)候依賴的東西

不加 --dev 是你發(fā)布之后還依賴的東西

這種區(qū)別會(huì)在 package.json 里表現(xiàn)出來(lái) (dependencies 和 devDependencies)

修改 webpack.config.js 文件

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
+    entry: './src/app.jsx',
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'app.js'
    },
    module: {
        rules: [
            {
+                test: /\.jsx$/,
                exclude: /(node_modules)/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['env', 'es2015', 'react']
                    }
                }
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            title: 'MY-WEBPACK',
            template: './src/index.html'
        })
    ]
};

我們修改了入口文件的后綴名和 module -> rules -> test 里的文件后綴名

修改 ./src/app.js 的內(nèi)容 并把文件名改為 ./src/app.jsx

import React from 'react';
import ReactDOM from 'react-dom';

ReactDOM.render(
    <h1>Hello, world!</h1>,
    document.getElementById('app')
);

接著可以運(yùn)行打包指令了

node_modules/.bin/webpack

然后用瀏覽器打開(kāi) ./dist/index.html 看看結(jié)果, 你應(yīng)該可以看到一行 "Hello, world!"

另外你有興趣的話可以去 ./dist/app.js 看看, jsx 語(yǔ)法也被翻譯為相應(yīng)的 ES2015 語(yǔ)法了(反正我懶得看)


下一次我們處理下 css/sass 的解析

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拷泽,一起剝皮案震驚了整個(gè)濱河市蚓峦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡杈湾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門攘须,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)漆撞,“玉大人,你說(shuō)我怎么就攤上這事于宙「〔担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵限煞,是天一觀的道長(zhǎng)抹恳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)署驻,這世上最難降的妖魔是什么奋献? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮旺上,結(jié)果婚禮上瓶蚂,老公的妹妹穿的比我還像新娘。我一直安慰自己宣吱,他們只是感情好窃这,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著征候,像睡著了一般杭攻。 火紅的嫁衣襯著肌膚如雪祟敛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天兆解,我揣著相機(jī)與錄音馆铁,去河邊找鬼。 笑死锅睛,一個(gè)胖子當(dāng)著我的面吹牛埠巨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播现拒,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辣垒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了印蔬?” 一聲冷哼從身側(cè)響起勋桶,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扛点,沒(méi)想到半個(gè)月后哥遮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陵究,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奥帘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铜邮。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寨蹋,靈堂內(nèi)的尸體忽然破棺而出松蒜,到底是詐尸還是另有隱情,我是刑警寧澤已旧,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布秸苗,位于F島的核電站,受9級(jí)特大地震影響运褪,放射性物質(zhì)發(fā)生泄漏惊楼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一秸讹、第九天 我趴在偏房一處隱蔽的房頂上張望檀咙。 院中可真熱鬧,春花似錦璃诀、人聲如沸弧可。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棕诵。三九已至裁良,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間校套,已是汗流浹背价脾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搔确,地道東北人彼棍。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像膳算,于是被迫代替她去往敵國(guó)和親座硕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容