看到有意思的demo想练练手时,须要环境去实现功能,这个时候就须要快速搭建一个环境,接下来就教你如何快速实现搭建一个react+webpack环境。
到这一步,在你的文件夹下就会出现一个myapp的文件夹,你接下来的项目就是在这里面进行的,固然你也能够换名字的。css
后面的安装插件或者其余依赖的时候,要先将终端运行的环境调整到当前文件夹,即myapp(在终端运行cd myapp便可)html
调整好文件夹后就能够安装yarn了,运行npm install yarn
这个时候你会发如今你的myapp文件夹下多了关于yarn的文件,这就代表你可使用yarn来加载依赖了node
{ "name": "myapp", "version": "0.1.0", "private": true, "dependencies": { "react": "^16.5.0", "react-dom": "^16.5.0", "react-scripts": "1.1.5" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" } }
打开package.json,你会发现里面其实已经有内容了,在终端运行yarn start,就会弹出这样的界面react
这样就说明目前你搭建的一切正常,下面就是疯狂的删文件的阶段了(由于不须要那么多文件)webpack
将文件夹里的内容删成上图这样,而后在src下建立一个index.html文件做为入口文件,其余的文件中的内容也要修改web
{ "name": "myapp", "version": "0.1.0", "private": true, "dependencies": { "react": "^16.5.0", "react-dom": "^16.5.0" }, "scripts": { } }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id ='root'></div> </body> </html>
import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import './index.css'; class App extends Component{ render(){ return( <div class = 'APP' /> ) } } ReactDOM.render(<APP/>,getElementById('root'))
index.css中的内容能够不变,基本的react就搭成了,如今就是加上webpack进行打包的时候了。npm
const path = require('path') const webpack = require('webpack') function resolve(relatedPath) { return path.join(__dirname, relatedPath) } module.exports = { entry: { index: resolve('../myapp/src/index.js') }, output: { path: resolve('../myapp/dist'), filename: '[name].[hash:4].js', }, resolveLoader: { moduleExtensions: ['-loader'] }, module: { rules: [ { test: /\.js[x]?$/, exclude: /node_modules/, loader: 'babel', query: { presets: ['react', 'es2015', 'stage-0'] } }, { test: /\.css/, loader: 'css' }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'url', options: { limit: 8192, name: 'img/[name].[hash:4].[ext]' } }, { test: /\.html$/, //静态资源 loader: 'html', } ], } }
打包事后的文件会在myapp下的dist文件夹中生成,入口文件是src下面的index.js。json
直接将文件中的内容改为下面的样子babel
{ "name": "myapp", "version": "0.1.0", "private": true, "dependencies": {//新增了webpack "react": "^16.5.0", "react-dom": "^16.5.0", "webpack": "~3.10.0" }, "devDependencies": {//新增了babel转换JSX和其余插件 "babel-core": "~6.26.0", "babel-eslint": "~8.2.1", "babel-loader": "~7.1.2", "babel-plugin-import": "^1.8.0", "babel-plugin-transform-decorators-legacy": "~1.3.4", "babel-plugin-transform-runtime": "~6.23.0", "babel-preset-env": "^1.6.1", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "css-loader": "~0.28.9", "url-loader": "~0.6.2" }, "scripts": {//新增了打包的配置文件 "build": "webpack --config webpack.config.js" } }
若是你的myapp下也生成了这个dist文件夹,而且在里面有index文件,那么恭喜你,一个最简单的react+webpack环境就搭好了。app
webpack的功能很强大,随着后面的组件之间的调用愈来愈复杂,会有相应的插件去处理相应的问题,那些之后再讲吧。