React + Typescript + Webpack 开发环境配置

对于复杂或多人开发的 React 项目来讲,管理和使用每一个组件的 propsstate 或许会成为一件让人头痛的事情,而为每个组件写文档,成本也会比较大,对项目的开发效率也不是最理想的。css

TypescriptReact 带来不少好处:html

  • 在组件头部定义 interface,让每一个人在拿到组件的第一时间就能够很明确知道该组件须要使用的 propsstate前端

  • 在编译中发现问题,减小运行时的报错;react

  • 能够在编辑器中实现实时类型校验、引用查询;webpack

  • 约束类型,在混合多语言环境中下降风险,等。git

且配置也是很是简单,步骤以下。github

文件目录

.
├── build # 前端配置文件
│   ├── index.html
│   ├── webpack.config.js
├── app # 前端目录
├── .gitignore
├── package.json
├── tsconfig.json
└── tslint.json

配置流程

建立项目

mkdir my-project && cd my-project
npm init

安装依赖

npm i -g webpack webpack-dev-server
npm i --save react react-dom @types/react @types/react-dom
npm i --save-dev ts-loader source-map-loader
npm link webpack webpack-dev-server typescript

配置 webpack

/* build/webpack.config.js */
const config = {
  entry: './app/index.tsx',
  output: {
    filename: 'app.bundle.js',
    path: './public',
    publicPath: '/assets'
  },
  devtool: 'source-map',
  resolve: {
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
  },
  module: {
    loaders: [
      {
        test: /\.tsx?$/,
        loader: 'ts-loader'
      }
    ],
    preLoaders: [
      {
        test: /\.js$/,
        loader: 'source-map-loader'
      }
    ]
  },
  devtool: 'eval'
}

module.exports = config

配置 tsconfig

/* tsconfig.json */
{
    "compilerOptions": {
        "outDir": "./public/",
        "sourceMap": true,
        "noImplicitAny": true,
        "module": "commonjs",
        "target": "es5",
        "jsx": "react"
    },
    "files": [
        "./app/index.tsx"
    ]
}

至此,基本配置已经完成,后面建立好一个入口页面和entry文件就能够跑起来了:web

/* build/index.html */
<!doctype html>
<html lang="zh-cn">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
    <title>Hello world</title>
    <script src="http://localhost:8080/webpack-dev-server.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <script src="assets/app.bundle.js"></script>
  </body>
</html>
/* app/index.tsx */
import * as React from 'react'
import { render } from 'react-dom'

interface IAppProps {}
interface IAppState {}

class App extends React.Component<IAppProps, IAppState> {
  public render(): JSX.Element {
    return (
      <div>
        Hello world
      </div>
    )
  }
}

render(<App />, document.getElementById('app'))

启动项目

webpack-dev-server --inline --config build/webpack.config.js --content-base build --open

出来吧神龙typescript

简单的说明

Webpack 配置

Webpack配置实际上是一件很简单的事情,这也是他具有强大竞争力的重要因素。
从配置文件中能够看出,里面无非就是entryoutputloader,若是须要编译CSS,在loader里面加一个便可:npm

npm i --save-dev style-loader css-loader
/* build/webpack.config.js */
const config = {
  // ...
  module: {
    loaders: [
      {
        test: /\.css/,
        loader: 'style-loader!css-loader'
      }
    ],
    // ...
  },
  // ...
}

项目启动

项目启动的命令过长,放进 package.jsonscripts 就行了:

/* package.json */
{
  "scripts": {
    "dev": "webpack-dev-server --inline --config build/webpack.config.js --content-base build --open",
  },
}

再执行如下命令试试:

npm run dev

tslint

在开发中若是有个约束代码的工具可以让代码更加优雅,之前用的是 eslint,若是用 .tsx 就不能生效了,这里推荐使用 tslint

npm i -g tslint
cd my-project
tslint --init

这样会在项目文件中建立一个现成的 tslint 配置文件: tslint.json ,个性化方案能够自行设置。

参考

webpack 新官网
webpack dev server
tsconfig.json 配置文档
style-loader
tslint

原文

原文地址:React + Typescript + Webpack 开发环境配置
文章做者:Heleth
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 转载请注明出处

相关文章
相关标签/搜索