目录结构

asset/

  • css/
  • img/

src/

  • entry.js ------------------------ 入口文件

.babelrc

index.html

package.json

webpack.config.js

运行命令

  1. 安装依赖:npm install
  2. 运行项目:npm start

配置预览

package.json

  1. {
  2. "name": "react_webpack_demo",
  3. "version": "1.0.0",
  4. "description": "a demo using react and webpack",
  5. "main": "index.js",
  6. "scripts": {
  7. "start": "webpack-dev-server --port 8080 --hot --inline --progress --colors --devtool eval"
  8. },
  9. "author": "Ruth",
  10. "license": "ISC",
  11. "devDependencies": {
  12. "babel-core": "^6.18.2",
  13. "babel-loader": "^6.2.7",
  14. "babel-preset-es2015": "^6.18.0",
  15. "babel-preset-react": "^6.16.0",
  16. "css-loader": "^0.25.0",
  17. "extract-text-webpack-plugin": "^1.0.1",
  18. "node-sass": "^3.11.2",
  19. "react-router": "^3.0.0",
  20. "sass-loader": "^4.0.2",
  21. "style-loader": "^0.13.1",
  22. "webpack": "^1.13.3",
  23. "webpack-dev-server": "^1.16.2"
  24. },
  25. "dependencies": {
  26. "react": "^15.3.2",
  27. "react-dom": "^15.3.2"
  28. }
  29. }

webpack.config.js

  1. var webpack = require('webpack');
  2. // css 单独打包,使用该插件后就不需要配置style-loader了
  3. // 本来是内联在最终的网页里,现在通过外联方式,可以在/dist文件夹下找到单独的css文件
  4. var ExtractTextPlugin = require('extract-text-webpack-plugin');
  5. module.exports = {
  6. entry: {
  7. index: './src/entry.js', // 唯一的入口文件
  8. vendor: ['react'] // 这里是依赖的库文件配置,和CommonsChunkPlugin配合使用可以单独打包
  9. },
  10. output: {
  11. path: '/dist', //打包后的文件存放的地方
  12. filename: 'bundle.js',
  13. publicPath: 'http://localhost:8080/dist/' //启动本地服务后的根目录
  14. },
  15. devServer: {
  16. historyApiFallback: true,
  17. hot: true,
  18. inline: true,
  19. progress: true
  20. },
  21. resolve: {
  22. extensions: ['', '.js', '.jsx']
  23. },
  24. module: {
  25. loaders: [{
  26. test: /\.(js|jsx)$/,
  27. loader: 'babel',
  28. // 可以单独在当前目录下配置.babelrc,也可以在这里配置
  29. query: {
  30. // presets: ['es2015', 'react']
  31. },
  32. // 排除 node_modules 下不需要转换的文件,可以加快编译
  33. exclude: /node_modules/
  34. }, {
  35. test: /\.css$/,
  36. loader: ExtractTextPlugin.extract("style", "css")
  37. }, {
  38. test: /\.scss$/,
  39. loader: ExtractTextPlugin.extract("style", "css!sass")
  40. }, {
  41. test: /\.(png|jpg|gif)$/,
  42. loader: 'url?limit=819200'
  43. }]
  44. },
  45. plugins: [
  46. new ExtractTextPlugin('main.css'),
  47. new webpack.optimize.CommonsChunkPlugin({
  48. name: 'vendor',
  49. filename: 'vendor.js'
  50. })
  51. ]
  52. };

.babelrc

  1. {
  2. "presets": [
  3. "react",
  4. "es2015"
  5. ],
  6. "plugins": []
  7. }

其他

需要更多其它配置,请参考 webpack_scaffold

github地址:react\_webpack\_scaffold

参考资源

  1. 掘金-react 搜索

  2. 【资料汇总】React (中文)

  3. React.js 2016 最佳实践

  4. React.js 教程

  5. React.js 官网

  6. 十分详细的React入门实例

后记

搞配置的过程中,一直报错,原来是自己没有安装 babel-preset-es2015babel-preset-react,导致即使在 .babelrc 中已经配置了还报错T_T,具体参看 Babel 入门教程

极简版 react+webpack 脚手架的更多相关文章

  1. Underscore源码阅读极简版入门

    看了网上的一些资料,发现大家都写得太复杂,让新手难以入门.于是写了这个极简版的Underscore源码阅读. 源码: https://github.com/hanzichi/underscore-an ...

  2. 200行代码实现简版react🔥

    200行代码实现简版react

  3. js消除小游戏(极简版)

    js小游戏极简版 (1) 基础布局 <div class = "box"> <p></p> <div class="div&qu ...

  4. SimpleThreadPool极简版

    package com.dwz.concurrency.chapter13; import java.util.ArrayList; import java.util.LinkedList; impo ...

  5. 纯粹极简的react状态管理组件unstated

    简介 unstated是一个极简的状态管理组件 看它的简介:State so simple, it goes without saying 对比 对比redux: 更加灵活(相对的缺点是缺少规则,需要 ...

  6. react diff 极简版

    为什么react这么快呢 ? 因为react用了虚拟DOM: 但是每次虚拟DOM转真实DOM不也是很浪费性能吗 ? nice,所以关键点在Diff算法这里,去对比新旧DOM树,而后通过补丁去更新到真实 ...

  7. 极简版ASP.NET Core学习路径及教程

    绝承认这是一个七天速成教程,即使有这个效果,我也不愿意接受这个名字.嗯. 这个路径分为两块: 实践入门 理论延伸 有了ASP.NET以及C#的知识以及项目经验,我们几乎可以不再需要了解任何新的知识就开 ...

  8. 【极简版】SpringBoot+SpringData JPA 管理系统

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在上一篇中已经讲解了如何从零搭建一个SpringBo ...

  9. 【极简版】OpenGL 超级宝典(第五版)环境配置 VS2010

    事先声明:该教程仅适用于VS2010环境下超级宝典第五版的配置 第一步:下载示例代码和环境包: 链接:https://pan.baidu.com/s/1llRRQ8ymBgMGuXp5M50pJw 提 ...

随机推荐

  1. 关于Youtube URL的十个技巧

    你一定很熟悉Youtube了,知道它是一个视频分享网站.是的,youtube目前十分流行,你也许会常常访问.这里有一些关于youtube url的技巧,了解了这些技巧,你就可以更好的利用youtube ...

  2. Unity3d 脚本相互调用

    unity中三种调用其他脚本函数的方法 第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用…… 第二种,GameObject.Find("脚本所在物体名& ...

  3. 继续Kanzi

    转眼间,Kanzi已经发展到3.3版本了,之前研究过的东西,今天有空下了个版本跟进更新看看有没有什么变化.新的引擎跟以前2.x版本有很大的差别.新引擎增加了很多新功能(包括局部刷新技术),也跟随大潮加 ...

  4. C library function - rewind()

    Description The C library function void rewind(FILE *stream) sets the file position to the beginning ...

  5. nodejs 访问mysql

    安装 $ npm install mysql 简介 这个一个mysql的nodejs版本的驱动,是用JavaScript来编写的.不需要编译 这儿有个例子来示范如何使用: var mysql = re ...

  6. JDK中的native2ascii命令详解

    1.native2ascii简介: native2ascii是sun java sdk提供的一个工具.用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码 ...

  7. iOS开发 ReactiveCocoa入门教程 第一部分

    作为一个iOS开发者,你写的每一行代码几乎都是在响应某个事件,例如按钮的点击,收到网络消息,属性的变化(通过KVO)或者用户位置的变化(通过CoreLocation).但是这些事件都用不同的方式来处理 ...

  8. phalcon: update修改数据却变成了insert插入数据

    phalcon: 在对表进行操作是,update修改数据却变成了insert插入数据. 发现,update的时,无论怎么加where都会变成了insert插入数据. 检查了一下表,原来是表没有 主键引 ...

  9. Python之路 day1 用户登录多次被锁定

    编写登陆接口: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 #Author:ersa import getpass,os,sys #读取账户信息到内存中 try: accounts_fil ...

  10. JavaWeb基础: 获取资源文件

    Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...