看到有意思的demo想练练手时,需要环境去实现功能,这个时候就需要快速搭建一个环境,接下来就教你如何快速实现搭建一个react+webpack环境。
第一步:创建一个空文件夹
第二步:在终端运行npm create-react-app
第三步:在终端运行create-react-app myapp
到这一步,在你的文件夹下就会出现一个myapp的文件夹,你接下来的项目就是在这里面进行的,当然你也可以换名字的。
注意:
后面的安装插件或者其他依赖的时候,要先将终端运行的环境调整到当前文件夹,即myapp(在终端运行cd myapp即可)
调整好文件夹后就可以安装yarn了,运行npm install yarn
这个时候你会发现在你的myapp文件夹下多了关于yarn的文件,这就表明你可以使用yarn来加载依赖了
第四步:运行项目
{
"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,就会弹出这样的界面
这样就说明目前你搭建的一切正常,下面就是疯狂的删文件的阶段了(因为不需要那么多文件)
第五步:修改文件的内容
将文件夹里的内容删成上图这样,然后在src下创建一个index.html文件作为入口文件,其他的文件中的内容也要修改
package.json
{
"name": "myapp",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.5.0",
"react-dom": "^16.5.0"
},
"scripts": {
}
}
index.html
<!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>
index.js
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进行打包的时候了。
增加webpack打包的功能
在myapp下新建webpack.config.js配置文件
webpackage.config.js
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。
配置package.json文件
直接将文件中的内容改成下面的样子
{
"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"
}
}
运行yarn install(将所有的依赖加载进去)
运行yarn build(将项目进行打包)
打包结果
如果你的myapp下也生成了这个dist文件夹,并且在里面有index文件,那么恭喜你,一个最简单的react+webpack环境就搭好了。
总结
webpack的功能很强大,随着后面的组件之间的调用越来越复杂,会有相应的插件去处理相应的问题,那些以后再讲吧。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。