2
看到有意思的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的功能很强大,随着后面的组件之间的调用越来越复杂,会有相应的插件去处理相应的问题,那些以后再讲吧。


huhaha24
261 声望17 粉丝

加油~