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 相关文章推荐
60行js代码实现俄罗斯方块
Mar 31 Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
JavaScript ES6常用基础知识总结
Feb 09 Javascript
Vue表情输入组件 微信face表情组件
Feb 11 Javascript
js获取form表单中name属性的值
Feb 27 Javascript
js实现图片推拉门效果代码实例
May 18 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
Jun 07 Javascript
Node使用Nodemailer发送邮件的方法实现
Feb 24 Javascript
面试中canvas绘制图片模糊图片问题处理
Mar 13 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
jQuery代码优化 遍历篇
2011/11/01 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
python实现tail -f 功能
2020/01/17 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python urllib2运行过程原理解析
2020/06/04 Python
餐饮业会计岗位职责
2013/12/19 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
家长给孩子的评语
2014/01/30 职场文书
《乞巧》教学反思
2014/02/27 职场文书
室内设计专业自荐信
2014/05/31 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
党课主持词大全
2015/06/30 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
python的html标准库
2022/04/29 Python