window搭建webpack,react,babel傻瓜教程


  首先現在的webpack教程已經很多了,寫這篇的原因是因為自己在從小白開始的搭建過程中,並沒有找到比較好的教程,花費了很多的時間,so 有了這篇博客,方便小白同學學習。

  node環境在這里不在贅述,package.json文件如下

{
  "name": "wn",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server --hot --inline"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.13.2",
    "babel-preset-react": "^6.11.1",
    "css-loader": "^0.23.1",
    "node-sass": "^3.8.0",
    "react": "^15.3.0",
    "react-dom": "^15.3.0",
    "sass-loader": "^4.0.0",
    "style-loader": "^0.13.1",
    "stylus": "^0.54.5",
    "stylus-loader": "^2.1.1",
    "url-loader": "^0.5.7",
    "webpack": "^1.13.1",
    "webpack-dev-server": "^1.14.1"
  }
}

  這里面有個坑,就是babel-preset-react這個插件,babel-loader中es2015這個插件是解析es6語法的,babel-preset-react這個插件是解析react語法的,在mac中這個插件集成在了es2015中,但是window中並沒有集成,導致編譯失敗,這點大家注意。

  拿到這個文件,直接命令行npm install安裝完畢。ps:"start": "webpack-dev-server --hot --inline"這項配置是輸入npm start時執行的指令,這里會啟動localhost:8080接口,在這個頁面會保存后自動刷新。

  接下來是webpack.config.js文件,這里面的注釋我寫的還算多,不在解釋。

  這里有官網的loader列表,大家可以自行添加使用http://webpack.github.io/docs/list-of-loaders.html

module.exports = {
    //在log中定位源文件位置,跟sass的sourcemap一樣
    devtool: 'source-map',
    //webpack-dev-server配置
    devServer: {
        historyApiFallback: true,
        hot: true,
        inline: true,
        progress: true,
    },
    //頁面入口文件配置
    entry: 'page/index.js',
    //入口文件輸出配置
    output: {
        filename: 'bundle.js'
    },
    module: {
        //加載器配置,這些loader會解析不同格式的文件,然后一起打包成js文件
        loaders: [
            { test: /\.css$/, loader: 'style-loader!css-loader' },
            { test: /\.scss$/, loader: 'style!css!sass?sourceMap'},
            { test: /\.styl$/, loader: 'style-loader!css-loader!stylus-loader'},
            { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'},
            { test: /\.js$/, loader: "babel-loader", query: {presets: ['es2015','react']}}
        ]
    },
    //其它解決方案配置
    resolve: {
        //自動擴展文件后綴名,意味着我們require模塊可以省略不寫后綴名
        extensions: ['', '.js', '.json', '.scss', '.styl'],
    }
};

  下面是首頁index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World app</title>
  </head>
  <body>
      <div id='app'></div>
  </body>
  <script type="text/javascript" src='bundle.js'></script>
</html>

  index.js文件

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

ReactDOM.render(
  <div>hello world</div>,
  document.getElementById('app')
)

  文件目錄

     

  在根目錄執行npm start后,打開瀏覽器http://localhost:8080,每次修改文件后頁面都會自動刷新,這個打包在內存中,不會生成打包后扥文件。

  bundle文件在執行webpack命令后會打包出來。

  下一篇會加上react-router和redux等更高級的庫,再見!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM