使用webpack搭建react环境

tip:虽然官方提供了create-react-app的方式来创建react项目,但是还是想用用webpack来搭建下,当然create-react-app也是建立在webpack上的,可以使用npm run eject来调取webpack的配置文件

首先创建一个空文件夹,然后通过npm init初始化得到一个package.json文件

如果不想一个个安装依赖包,直接复制以下的代码到package.json文件中,当然像sass这些非必须的依赖包也可以删除,然后通过npm install来安装所需的依赖包

"scripts": {
    "dev": "webpack-dev-server",
    "build": "webpack"
}, 
"devDependencies": {
    "html-webpack-plugin": "^3.2.0",
    "webpack": "^4.39.3",
    "webpack-cli": "^3.3.7",
    "webpack-dev-server": "^3.8.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "clean-webpack-plugin": "^2.0.1",
    "css-loader": "^2.1.1",
    "node-sass": "^4.11.0",
    "sass-loader": "^7.1.0",
    "style-loader": "^0.23.1"
 },
 "dependencies": {
    "react": "^16.8.6",
    "react-dom": "^16.8.6"
 }

如果按分类来安装

webpack: 

npm install webpack webpack-cli webpack-dev-server --save--dev

babel: 用来将ES6代码转化为ES5,babel-core

npm install babel-core babel-loader@7 babel-preset-env babel-preset-es2015 babel-preset-react babel-preset-stage-0 --save--dev

webpack会使用的插件:

npm install clean-webpack-plugin html-webpack-plugin --save--dev

css一些loader:

npm install sass-loader node-sass style-loader css-loader --save--dev

react:

npm install react react-dom --save

安装完所有的依赖包后,在根文件下创建一个.babelrc文件,作为babel的配置文件,内容为:

{
    "presets": [
        "stage-0",
        "react",
        "es2015"
    ]
}

创建一个index.html,创建一个自定义id的div元素,该id必须和后面的react中的对应

<!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">
</head>
<body>
    <div id="root"></div>
</body>
</html>

创建一个src,作为项目开发的文件夹,在里面创建一个index.js,Hello.jsx,style.sass

// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './Hello'
ReactDOM.render(
    <Hello />,
    document.getElementById('root')
);
// Hello.jsx
import React, {Component} from 'react'
import './style.sass'
class Hello extends Component {
    render () {
        return (
            <p>Hello World</p>   
        )
    }
}
export default Hello
// style.sass
p
  font-size: 30px
  color: red

创建一个webpack.config.js作为webpack的配置文件

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')
const Webpack = require('webpack')
module.exports = {
    entry: ['webpack/hot/dev-server', path.resolve(__dirname, './src/index.js')],
    output: {
        path: path.resolve(__dirname, './build'),
        filename: '[hash:8].js'
    },
    resolve: {
        extensions: ['.js', '.jsx']
    },
    devServer: {
        contentBase: './build',
        host: "127.0.0.1",
        port: '3001',
        inline: true
    },
    plugins: [
        new CleanWebpackPlugin(),
        new HtmlWebpackPlugin({
            title: '我的网站',
            filename: 'index.html',
            template: './index.html'
        }),
        new Webpack.HotModuleReplacementPlugin()
    ],
    module: {
        rules: [
            {
                test: /\.sass$/,
                loaders: ['style-loader', 'css-loader', 'sass-loader']
            },
            {
                test: /\.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules/
            }
        ]
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值