webpack@3.0+配置react開發(fā)環(huán)境

  • 項目創(chuàng)建
創(chuàng)建一個文件夾宴霸,進(jìn)入到該目錄膛壹,執(zhí)行npm init。所有的提示內(nèi)容均可以跳過窖剑,執(zhí)行完之后,目錄中會多一個package.json文件汉矿,該文件為核心文件呻此,包含包依賴管理和腳本任務(wù)。

mkdir webpack-demo
cd webpack-demo
npm init
  • 安裝react趁仙,react-dom,webpack
--save的含義是項目上線運行所需要的包(生產(chǎn)環(huán)境)
--save-dev是開發(fā)環(huán)境所需要的包
npm install react react-dom --save
npm install webpack@3.8.1 --save-dev -g
(配置3.0+的webpack洪添,全局安裝webpack)
  • 項目目錄
目錄.png
  • index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="app">
    </div>
    <script src="bundle.js"></script>
</body>
</html>
  • index.js
import React, { Component } from 'react';
import { render } from 'react-dom';

render(
    <div>Hello React!</div>,
    document.getElementById('app')
);
  • webpack.config.js
const path = require('path');
module.exports = {
    entry: path.resolve(__dirname, './src/index.js'), //指定入口文件,程序從這里開始編譯,__dirname當(dāng)前所在目錄, ../表示上一級目錄, ./同級目錄
    output: {
        path: path.resolve(__dirname, './dist'), // 輸出的路徑
        filename: 'bundle.js'  // 打包后文件
    },
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['es2015', 'react'],
                    }
                },
                exclude: /node_modules/
            }
        ]
    }
}
  • 執(zhí)行打包
1. webpack --config webpack.config.js
  執(zhí)行打包之后會報出如圖(缺少依賴.png)錯誤雀费。
  因為我們使用了react干奢,react是使用jsx語法實現(xiàn)的,而jsx不能直接被瀏覽器識別和執(zhí)行盏袄,所以這里需要引入Babel庫進(jìn)行轉(zhuǎn)碼忿峻。
2. npm install babel-core babel-loader babel-preset-es2015 babel-preset-react --save
3. 再次執(zhí)行webpack --config webpack.config.js
  會報出如圖(版本錯誤.png)錯誤,babel-core和babel-loader版本對不上
缺少依賴.png

版本錯誤.png
  • 簡單的優(yōu)化
1. index.js
  import React from 'react';
  import ReactDOM from 'react-dom';
  import App from './App';

  ReactDOM.render((<App />), document.getElementById('app'));
2. 新建.babelrc文件辕羽,提取babel配置
  {
    "presets": [
      "es2015",
      "react"
    ]
  }
3. 修改webpack.config.js
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      }
    ]
  }
4. 在src下新建App.js
  import React, { Component } from 'react';

  class App extends Component {
    render() {
      return (
        <div>Hello React!</div>
      );
    }
  }

  export default App;
  • 以腳本的方式構(gòu)建
修改package.json逛尚,加入自定義腳本,在項目根目錄執(zhí)行npm run dev即可達(dá)到上面一樣的效果刁愿。
"scripts": {
  "dev": "webpack --config webpack.config.js"
}
  • 搭建前端服務(wù)器
webpack-dev-server是一個小型的靜態(tài)文件服務(wù)器绰寞,為webpack打包的資源文件提供Web服務(wù)。
1. 在src下面新建文件webpackDevServer.config.js
  'use strict'

  const WebpackDevServer = require('webpack-dev-server');
  const config = require('./webpack.config');
  const webpack = require('webpack');
  const path = require('path');
  const compiler = webpack(config);
  const server = new WebpackDevServer(compiler, {
    contentBase: path.resolve(__dirname, './dist'), //默認(rèn)會以根文件夾提供本地服務(wù)器酌毡,這里指定文件夾
    historyApiFallback: true, //在開發(fā)單頁應(yīng)用時非常有用克握,它依賴于HTML5 history API蕾管,如果設(shè)置為true枷踏,所有的跳轉(zhuǎn)將指向index.html
    port: 3000, //如果省略,默認(rèn)8080
    publicPath: "/"
  });
  server.listen(3000, 'localhost', function (err) {
    if (err) throw err
  })
2. 更新package.json
  "scripts": {
    "dev": "node webpackDevServer.config"
  }

jP袢洹!注意webpack-dev-server的版本問題,不然會報出如下錯誤掏熬。
webpack-dev-server版本問題.png

到此已經(jīng)使用webpack搭建好簡單的React開發(fā)環(huán)境佑稠。??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市旗芬,隨后出現(xiàn)的幾起案子舌胶,更是在濱河造成了極大的恐慌,老刑警劉巖疮丛,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幔嫂,死亡現(xiàn)場離奇詭異,居然都是意外死亡誊薄,警方通過查閱死者的電腦和手機履恩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呢蔫,“玉大人切心,你說我怎么就攤上這事∑酰” “怎么了绽昏?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俏脊。 經(jīng)常有香客問我而涉,道長,這世上最難降的妖魔是什么联予? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任啼县,我火速辦了婚禮,結(jié)果婚禮上沸久,老公的妹妹穿的比我還像新娘季眷。我一直安慰自己,他們只是感情好卷胯,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布子刮。 她就那樣靜靜地躺著,像睡著了一般窑睁。 火紅的嫁衣襯著肌膚如雪挺峡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天担钮,我揣著相機與錄音橱赠,去河邊找鬼。 笑死箫津,一個胖子當(dāng)著我的面吹牛狭姨,可吹牛的內(nèi)容都是我干的宰啦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼饼拍,長吁一口氣:“原來是場噩夢啊……” “哼赡模!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起师抄,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤漓柑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叨吮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欺缘,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年挤安,在試婚紗的時候發(fā)現(xiàn)自己被綠了谚殊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛤铜,死狀恐怖嫩絮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情围肥,我是刑警寧澤剿干,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站穆刻,受9級特大地震影響置尔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氢伟,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一榜轿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朵锣,春花似錦谬盐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诬烹,卻和暖如春砸烦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绞吁。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工幢痘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掀泳。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓雪隧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親员舵。 傳聞我的和親對象是個殘疾皇子脑沿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

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