├── app ├── common │ └── main.css ├── components │ └── App.js ├── index.tmpl.html └── main.js ├── npm-debug.log ├── package.json ├── readme.md └── webpack.config.js /app/common/main.css: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | -ms-text-size-adjust: 100%; 4 | -webkit-text-size-adjust: 100%; 5 | } 6 | 7 | *, *:before, *:after { 8 | box-sizing: inherit; 9 | } 10 | 11 | body { 12 | width: 100%; 13 | height: 100%; 14 | margin: 0; 15 | background: #eee; 16 | font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; 17 | overflow-x: hidden; 18 | } 19 | 20 | h1, h2, h3, h4, h5, h6, p, ul { 21 | margin: 0; 22 | padding: 0; 23 | font-weight: 100; 24 | } 25 | 26 | 27 | a { 28 | color: hsl(200, 50%, 50%); 29 | text-decoration: none; 30 | } 31 | -------------------------------------------------------------------------------- /app/components/App.js: -------------------------------------------------------------------------------- 1 | import React,{Component} from 'react'; 2 | 3 | export default class extends Component{ 4 | 5 | render(){ 6 | return( 7 |
8 |

hello react

9 |
10 | ) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/index.tmpl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Webpack Sample Project 7 | 8 | 9 |
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /app/main.js: -------------------------------------------------------------------------------- 1 | import React,{Component} from 'react'; 2 | import { render } from 'react-dom'; 3 | 4 | import App from './components/App'; 5 | 6 | render(( 7 | 8 | ), document.getElementById('root')) 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-template", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "webpack-dev-server --progress" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "autoprefixer": "^6.5.1", 13 | "babel-core": "^6.18.0", 14 | "babel-loader": "^6.2.5", 15 | "babel-plugin-react-transform": "^2.0.2", 16 | "babel-preset-es2015": "^6.18.0", 17 | "babel-preset-react": "^6.16.0", 18 | "css-loader": "^0.25.0", 19 | "extract-text-webpack-plugin": "^1.0.1", 20 | "file-loader": "^0.9.0", 21 | "html-webpack-plugin": "^2.24.0", 22 | "json-loader": "^0.5.4", 23 | "postcss-loader": "^1.0.0", 24 | "react": "^15.3.2", 25 | "react-addons-css-transition-group": "^15.3.2", 26 | "style-loader": "^0.13.1", 27 | "url-loader": "^0.5.7", 28 | "webpack": "^1.13.2", 29 | "webpack-dev-server": "^1.16.2" 30 | }, 31 | "dependencies": { 32 | "react-dom": "^15.3.2", 33 | "react-motion": "^0.4.5", 34 | "react-router": "^3.0.0" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # react + es6 + webpack 架构模板 2 | 3 | 项目目录结构 4 | ----------------- 5 | |--app (开发目录) 6 | |  |-------common(公共文件,例如css,工具代码等) 7 | |  |-------components (组件目录) 8 | |  |-------pages (页面目录,例如可以存放首页,分类页,个人中心等页面) 9 | |  |-------static (存放静态文件,图片等) 10 | |  |-------build (打包输出目录) 11 | |  |-------index.tmpl.html (html模板文件) 12 | |  |-------main.js (入口文件,可以在webpack.config.js中配置) 13 | | 14 | |-------|-node_module (nodejs模块) 15 | |-------|-package.json (npm 配置文件) 16 | |-------|-webpack.config.js (webpack 配置文件) 17 | 18 | _使用方法:_ 19 | ----------------- 20 | 21 | ### 1. `git clone https://github.com/cooleye/react-template.git` 22 | ### 2. `cd react-template` 进入项目目录 23 | ### 3. `npm install` 安装依赖 24 | ### 4. `npm start` 运行项目 25 | 26 | 27 | ----------------------------------------- 28 | 29 | #### *或者你也可以从零开始,先执行 npm init,创建 package.json,然后根据需要把依赖的模块安装上* 30 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var HtmlWebpackPlugin = require('html-webpack-plugin'); 3 | 4 | module.exports = { 5 | devtool: 'eval-source-map', 6 | 7 | entry: __dirname + "/app/main.js", 8 | output: { 9 | path: __dirname + "/build", 10 | filename: "bundle.js" 11 | }, 12 | 13 | module: { 14 | loaders: [ 15 | { test: /\.json$/, loader: "json" }, 16 | { test: /\.js$/, exclude: /node_modules/, loader: 'babel' ,query: { presets: ['es2015','react'] }}, 17 | { test: /\.css$/, loader: 'style!css?modules!postcss' }, 18 | //配置file-loader,加载图片,字体资源 19 | { test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/, loader: 'url-loader?limit=50000&name=[path][name].[ext]'} 20 | ] 21 | }, 22 | 23 | postcss: [ 24 | require('autoprefixer')//调用autoprefixer插件 25 | ], 26 | 27 | 28 | plugins: [ 29 | new HtmlWebpackPlugin({ 30 | template: __dirname + "/app/index.tmpl.html"//new 一个这个插件的实例,并传入相关的参数 31 | }) 32 | ], 33 | 34 | devServer: { 35 | port:8080, 36 | //colors: true, 37 | //historyApiFallback: true, 38 | //inline: true 39 | } 40 | } 41 | --------------------------------------------------------------------------------