如果安装了@ types / react-router,我是否需要安装react-router?

时间:2018-06-16 02:06:33

标签: reactjs typescript npm

我通过create-react-app

开始了一个反应项目
create-react-app my-app --scripts-version=react-scripts-ts

我得到了以下package.json

{
  "name": "my-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.4.1",
    "react-dom": "^16.4.1",
    "react-scripts-ts": "2.16.0"
  },
  "scripts": {
    "start": "react-scripts-ts start",
    "build": "react-scripts-ts build",
    "test": "react-scripts-ts test --env=jsdom",
    "eject": "react-scripts-ts eject"
  },
  "devDependencies": {
    "@types/jest": "^23.1.0",
    "@types/node": "^10.3.3",
    "@types/react": "^16.3.18",
    "@types/react-dom": "^16.0.6",
    "typescript": "^2.9.2"
  }
}

我知道构建生产包不需要devDependencies中的包,因此我们分别有依赖项和devDependencies。但是,如果我想添加一个新的软件包,比如react-router,我应该像下面这样单独执行以下两个工作吗?

npm install --save react-router
npm install --save-dev @types/react-router

或者我应该

npm install --save @types/react-router

如果两种方法之间存在差异,那么这两种方法的区别是什么?

2 个答案:

答案 0 :(得分:2)

npm install --save react-router安装实际模块,
npm install --save-dev @types/react-router仅安装typescript的类型信息。类型信息没有自己的功能,因此您需要安装两者 类型信息作为dev依赖项安装,因为在将typescript转换为JavaScript的构建过程之后不需要它。

答案 1 :(得分:1)

问题的答案是肯定的。

安装@types/react-router您只能获得react-router的TypeScript类型定义,而不是react-router功能。