设置项目

你需要 Node Package Manager 来安装项目依赖项。从 Nodejs.org 下载适用于你的操作系统的节点。节点包管理器附带节点。

你还可以使用节点版本管理器来更好地管理节点和 npm 版本。它非常适合在不同节点版本上测试你的项目。但是,不建议用于生产环境。

一旦在系统上安装了节点,请继续安装一些必要的软件包,以便使用 Babel 和 Webpack 来完成第一个 React 项目。

在我们真正开始在终端中命令之前。看看 BabelWebpack 用于什么。

你可以通过在终端中运行 npm init 来启动项目。按照初始设置。之后,在终端中运行以下命令 -

依赖关系:

npm install react react-dom --save

Dev Dependecies:

npm install babel-core babel-loader babel-preset-es2015 babel-preset-react babel-preset-stage-0 webpack webpack-dev-server react-hot-loader --save-dev

可选的 Dev 依赖项:

npm install eslint eslint-plugin-react babel-eslint --save-dev

你可以参考此示例 package.json

在项目根目录中创建 .babelrc,其中包含以下内容:

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

(可选)在项目根目录中创建 .eslintrc,其中包含以下内容:

{
  "ecmaFeatures": {
    "jsx": true,
    "modules": true
  },
  "env": {
    "browser": true,
    "node": true
  },
  "parser": "babel-eslint",
  "rules": {
    "quotes": [2, "single"],
    "strict": [2, "never"],
  },
  "plugins": [
    "react"
  ]
}

创建 .gitignore 文件以防止将生成的文件上传到你的 git 仓库。

node_modules
npm-debug.log
.DS_Store
dist

使用以下最低内容创建 webpack.config.js 文件。

var path = require('path');
var webpack = require('webpack');

module.exports = {
  devtool: 'eval',
  entry: [
    'webpack-dev-server/client?http://localhost:3000',
    'webpack/hot/only-dev-server',
    './src/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin()
  ],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['react-hot', 'babel'],
      include: path.join(__dirname, 'src')
    }]
  }
};

最后,创建一个 sever.js 文件,以便能够运行 npm start,内容如下:

var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var config = require('./webpack.config');

new WebpackDevServer(webpack(config), {
  publicPath: config.output.publicPath,
  hot: true,
  historyApiFallback: true
}).listen(3000, 'localhost', function (err, result) {
  if (err) {
    return console.log(err);
  }

  console.log('Serving your awesome project at http://localhost:3000/');
});

创建 src/app.js 文件以查看你的 React 项目执行的操作。

import React, { Component } from 'react';

export default class App extends Component {
  render() {
    return (
      <h1>Hello, world.</h1>
    );
  }
}

在终端中运行 node server.jsnpm start,如果你在 package.json 中定义了 start 代表什么