webpack + react 创建项目


一、前期准备

创建新的文件夹:

mkdir react-webpack-demo

切换到react-webpack-demo文件夹下面,生成packge.json配置文件

cd react-webpack-demo
npm init

在该目录下创建文件夹目录大致如下:


其中,build用于存放webpack打包的文件,.babelrc是babel的配置文件,webpack.config.js是webpack的配置文件,之后都需要,这里先创建。

二、下载插件


安装webpack:

npm i --save-dev webpack webpack-dev-server

这里的webpack-dev-server是用来开启本地服务器的,后文会介绍具体配置方法。


安装react,

npm i --save-dev react react-dom


安装babel-loader:因为现在项目基本都用到了es2015,所以我们需要下载将es6转换成浏览器可以识别的js:

npm install --save-dev babel-loader babel-core babel-preset-env

按照我们之前的步骤,默认都是安装最新的插件。

但是如果你项目有特殊要求,webpack版本不一样,也需要下载对应的babel-loader版本,规则如下:

webpack 1.x | babel-loader <= 6.x

webpack 2.x | babel-loader >= 7.x (recommended) (^6.2.10 will also work, but with deprecation warnings)

webpack 3.x | babel-loader >= 7.1


同样需要转换react(jsx)的插件:

npm install --save-dev babel-preset-react


三、配置文件

webpack.config.js 

var path=require('path');  //node 自带的path
module.exports={
    entry:path.resolve(__dirname,'app/index.jsx'),  //获取到当前文件夹下面的index.jsx为入口文件
    output:{
       path:path.resolve(__dirname,'build'),  //webpack打包输入路径
       filename:'bundle.js',                  //输入包的名字
    },
    modules {                                 //对webpack loader文件的规则约束
       rules: [{
           test: /\.js|jsx$/,           
           use:{
               loader:'babel-loader'
           }
       }]
    }
}

这里说明一下,这里modules的文件配置,是为了让webpack利用babel-loader识别js和jsx文件,当然如果要识别css,png文件等只要在rules里面继续配置,具体的可以查看官方文档


package.json,在script中定义快捷指令:

"start":"webpack-dev-server --progress --color",
"build":"webpack --config ./webpack.config.js --progress --color"

.babelrc

{
  "presets":[
     "env","react"
  ]
}


四、打包

这个时候我们就可以打包了

npm run build


当出现这样的就说明你打包成功了,也可以在bundle文件夹下面看到bundle.js文件


五、本地服务器运行网页

为了做一个有点意思的网页,我们在之前创建的index.jsx文件中写入:

import React from 'react';
import {render} from 'react-dom';

export default class App extends React.Component{
    render(){
        return(
           <div style={{height:'700px',width:'100%',backgroundColor:'pink'}}>
               Great, u successed!
           </div>
        )
     }
}

render(
  <App />,
  document.getElementById('root')
)


index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset=“utf-8”>
    <title>react-webpack-demo</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>

这里我们就需要用上webpack-dev-server开启服务器,这里需要引入html-webpack-loader:

npm i --save-dev html-webpack-loader

同时介绍一个打开浏览器的插件open-browser-webapck-plugin


npm i --save-dev open-browser-webpack-plugin


webpack.config.js现配置如下:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var OpenBrowserWebpackPlugin = require('open-browser-webpack-plugin');

module.exports={
  ......
  plugins:[
    new HtmlWebpackPlugin({
       template:__dirname+'/app/index.html',
    }),
    new OpenBrowserWebpackPlugin({
       url:'http://localhost:8080',
    })
  ]
}

现在,输入

npm start

就可以看到如下效果了:


最后,别问我为啥用大粉因为好看!

--------------------------------------------------------------------------------------------------

--------------------------------------------分割线---------------------------------------------

听说百度的人都加班到10点,那我起码也得10点01吧.............

--------------------------------------------分割线---------------------------------------------

--------------------------------------------------------------------------------------------------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,227评论 7 35
  • GitChat技术杂谈 前言 本文较长,为了节省你的阅读时间,在文前列写作思路如下: 什么是 webpack,它要...
    萧玄辞阅读 12,715评论 7 110
  • 最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的...
    My_Oh_My阅读 8,209评论 40 247
  • 前言 WebPack 是什么? WebPack 是什么,WebPack 可以看做是模块打包机:它做的事情是,分析你...
    Promise__阅读 1,162评论 3 12
  • 去年三月天 长街人面开遍 一朵朵折叠伞 明媚橱窗明媚眼 咖啡冷了咖啡馆 不记得哪一天 伞折旧了花纹皱了脸 三月流年
    孙鹏举阅读 108评论 0 1