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 相关文章推荐
Extjs入门之动态加载树代码
Apr 09 Javascript
关于URL中的特殊符号使用介绍
Nov 03 Javascript
关于编写性能高效的javascript事件的技术
Nov 28 Javascript
Lua表达式和控制结构学习笔记
Dec 15 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
JS简单实现点击复制链接的方法
Aug 03 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
Apr 11 Javascript
JS设置手机验证码60s等待实现代码
Jun 14 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
Dec 12 Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
Sep 05 Javascript
浅谈Three.js截图并下载的大坑
Nov 01 Javascript
微信小程序之页面拦截器的示例代码
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中一个控制字符串输出的函数
2006/10/09 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
关于微信小程序登录的那些事
2019/01/08 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
python 读取修改pcap包的例子
2019/07/23 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
个人自荐书
2013/12/20 职场文书
文秘应聘自荐书范文
2014/02/18 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL