代码之家  ›  专栏  ›  技术社区  ›  chen

如果我安装了@types/react router,需要安装react router吗?

  •  0
  • chen  · 技术社区  · 6 年前

    我通过create react app启动了一个react项目

    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 回复  |  直到 6 年前
        1
  •  2
  •   Mormund    6 年前

    npm install --save react-router 安装实际模块时,
    npm install --save-dev @types/react-router 仅安装typescript的类型信息。类型信息本身没有任何功能,因此需要同时安装这两个信息。
    类型信息是作为开发依赖项安装的,因为在将typescript转换为javascript的生成过程之后不需要它。

        2
  •  1
  •   Alex Vasilev    6 年前

    这个问题的答案是肯定的。

    安装 @types/react-router 只有 react-router 而不是 反应路由器 功能。