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 相关文章推荐
同一个网页中实现多个JavaScript特效的方法
Feb 02 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
深入理解jQuery3.0的domManip函数
Sep 01 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
详解如何在Angular中快速定位DOM元素
May 17 Javascript
利用JS制作万年历的方法
Aug 16 Javascript
Vue中插入HTML代码的方法
Sep 21 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
layui use 定义js外部引用函数的方法
Sep 26 Javascript
three.js 如何制作魔方
Jul 31 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
Aug 30 Javascript
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
微信小程序之页面拦截器的示例代码
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跨站刷票的实现代码
2013/06/18 PHP
php微信开发之谷歌测距
2018/06/14 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
javascript实用小函数使用介绍
2013/11/11 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
JS实现无限轮播无倒退效果
2020/09/21 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
Python中的魔法方法深入理解
2014/07/09 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
初中语文教学反思
2014/02/02 职场文书
团队精神的演讲稿
2014/05/14 职场文书
英语投诉信范文
2015/07/03 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
OpenCV全景图像拼接的实现示例
2021/06/05 Python