快速搭建一个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,就会弹出这样的界面
    0_1536666240227_19be7fc2-0b07-4b23-9316-55476933b02c-image.png
    这样就说明目前你搭建的一切正常,下面就是疯狂的删文件的阶段了(因为不需要那么多文件)

    第五步:修改文件的内容

    0_1536666283600_5258e486-56e8-44eb-866e-333bb4818814-image.png
    将文件夹里的内容删成上图这样,然后在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(将项目进行打包)

    打包结果

    0_1536666531068_529aad16-f211-471e-8dca-66c99fb9f0b2-image.png

    如果你的myapp下也生成了这个dist文件夹,并且在里面有index文件,那么恭喜你,一个最简单的react+webpack环境就搭好了。

    总结

    webpack的功能很强大,随着后面的组件之间的调用越来越复杂,会有相应的插件去处理相应的问题,那些以后再讲吧。



  • @ruisongzhou快速搭建一个react+webpack环境 中说:

    create-react-app

    create-react-app也能写博客( ´_ゝ`),你不如给大家讲解讲解webpack是怎么配置的呢。



  • @ruisongzhou
    create-react-app脚手架就是基于webpack的,不过生成的项目把webpack配置隐藏了。学webpack配置的话可以不用其他脚手架,直接从0开始搭✊


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待