React + webpack 环境配置的方法步骤


Posted in Javascript onSeptember 07, 2017

本文介绍了React + webpack 环境配置的方法步骤,分享给大家,具体如下:

安装配置Babel

babel-preset-es2015 ES6语法包,使代码可以随意地使用ES6的新特性。

babel-preset-react React语法包,专门用于React的优化,在代码中可以使用React ES6 classes的写法,同时直接支持JSX语法格式

安装Babel loader

// 安装babel-core核心模块和babel-loader
npm install babel-core babel-loader --save-dev


// 安装ES6 和 React 支持
npm install babel-preset-es2015 babel-preset-react --save-dev

配置 .babelrc

安装完Babel和它的插件,配置一下它的规则,在根目录下新建一个.babelrc空文件:

// 告诉Babel,编译JavaScript代码的时候要用这两个presets编译
 {
  "preset": ["es2015", "react”]
 }

安装配置ESLint

安装ESLint loader

为webpack添加这个preLoaders(在loader处理资源之前,先用preLoaders进行处理,代码检查在代码转换之前进行)

npm install eslint eslint-loader --save-dev

这里使用Airbnb开发配置合集eslint-config-airbnb,这个配置合集里面还包括以下3个插件:

npm install eslint-plugin-import eslint-plugin-react eslint-plugin-jsx-a11y --save-dev

npm install eslint-config-eslint

配置 .eslintrc

在根目录下新建一个.eslintrc的空文件:

{
  "extends": "airbnb",
  "rules": {
   "comma-dangle": ["error", "never"]
  }
 }

安装配置webpack

配置webpack之前,先安装一个webpack的插件——html-webpack-plugin,它可以帮助我们自动生成HTML页面,并且引入正确的JavaScript文件依赖:

npm install html-webpack-plugin —save-dev

在项根目录下新建一个webpack.config.js文件:

let path = require('path') 
let webpack = require('webpack')
let HtmlwebpackPlugin = require('html-webpack-plugin')
// 一些常用路径
const ROOT_PATH = path.resolve(__dirname)
const APP_PATH = path.resolve(ROOT_PATH, 'app')
const BUILD_PATH = path.resolve(ROOT_PATH, 'build')

module.exports = {
 entry: {
  app: path.resolve(APP_PATH, 'index.jsx')
 },
 output: {
  path: BUILD_PATH,
  filename: 'bundle.js'
 },
 // 开启 dev source map
 devtool: 'eval-source-map',
 // 开启 webpack dev server
 devServer: {
  historyApiFallback: true,
  hot: true,
  inline: true,
  progress: true
 },

 modules: {
  // 配置preLoaders, 将eslint 添加进去
  preLoaders: [
   {
    test: /\.jsx?$/,
    loaders: ['eslint'],
    include: APP_PATH
   }
  ],
  
  // 配置loader,将Babel添加进去
  loaders: [
   {
    test: /\.jsx?$/,
    loaders: ['babel'],
    include: APP_PATH
   }
  ]
 },

 // 配置 plugin
 plugins: [
  new HtmlwebpackPlugin({
   title: 'my first react webpack'
  })
 ],
 resolve: {
  extensions: ['', '.js', '.jsx']
  // 在js中import加载jsx扩展名的脚本
 }
}

添加组件热加载(HMR)功能

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

这个preset里面其实包括两方面:

  • react-transform-hmr用来实现热加载
  • react-transform-catch-errors用来捕获render里面的方法,并且直接展示在界面上

配置一下 .babelrc:

{
 "preset": ["es2015", "react"],
 "env": {
  "development": {
   "presets": ["react-hrme"]
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js判断背景图片是否加载成功使用img的width实现
May 29 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
Dec 10 Javascript
javascript中字符串的定义示例代码
Dec 19 Javascript
jquery 删除字符串最后一个字符的方法解析
Feb 11 Javascript
js 针对html DOM元素操作等经验累积
Mar 11 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
一个可复用的vue分页组件
May 15 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
Node.js静态服务器的实现方法
Feb 28 Javascript
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
微信小程序之页面拦截器的示例代码
Sep 07 #Javascript
基于js粘贴事件paste简单解析以及遇到的坑
Sep 07 #Javascript
微信小程序实现轮播图效果
Sep 07 #Javascript
使用mint-ui开发项目的一些心得(分享)
Sep 07 #Javascript
JavaScript+CSS相册特效实例代码
Sep 07 #Javascript
AngularJS 打开新的标签页实现代码
Sep 07 #Javascript
基于Cookie常用操作以及属性介绍
Sep 07 #Javascript
You might like
php 不使用js实现页面跳转
2014/02/11 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
索趣科技的答案
2007/02/07 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
fetch 使用及如何接收JS传值
2017/11/11 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Python基本语法经典教程
2016/03/11 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
python实现dijkstra最短路由算法
2019/01/17 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
python中自带的三个装饰器的实现
2019/11/08 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
python中如何打包用户自定义模块
2020/09/23 Python
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
编辑求职信样本
2013/12/16 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server