为什么react/redux前端项目在package.json中包含生产依赖项

Why does react/redux frontend project contains production dependencies in package.json?

本文关键字:json 包含生 依赖 package react redux 前端 项目 为什么      更新时间:2023-09-26

我刚刚开始学习React.js+Redux,我发现很多前端项目都使用npm作为包管理器。

让我们以这个项目为例-计数器。

它包含package.json文件。如果我们看一下这个文件的内容,我们会发现其中有devDependenciesdependencies条目

  "dependencies": {
    "react": "^0.14.7",
    "react-dom": "^0.14.7",
    "react-redux": "^4.2.1",
    "redux": "^3.2.1"
  },
  "devDependencies": {
    "babel-core": "^6.3.15",
    "babel-loader": "^6.2.0",
    "babel-preset-es2015": "^6.3.13",
    "babel-preset-react": "^6.3.13",
    "babel-preset-react-hmre": "^1.1.1",
    "babel-register": "^6.3.13",
    "cross-env": "^1.0.7",
    "enzyme": "^2.0.0",
    "expect": "^1.6.0",
    "express": "^4.13.3",
    "mocha": "^2.2.5",
    "node-libs-browser": "^0.5.2",
    "react-addons-test-utils": "^0.14.7",
    "webpack": "^1.9.11",
    "webpack-dev-middleware": "^1.2.0",
    "webpack-hot-middleware": "^2.9.1"
  }

虽然我知道devDependenciesdependencies之间的区别,但我不明白为什么项目在dependencies部分下列出reactreact-domredux。据我所知,这是一个前端项目,不需要在服务器上安装任何东西就可以在生产中工作。

正如@aarosil所指出的,npm并不关心前端或后端。它只是一个包裹管理器。

所以这一切都归结为项目结构。看看你给出的例子(React反例),这是一个在浏览器中运行的非常小的演示。它使用webpack来构建项目,在这种情况下,该项目由浏览器请求的JS捆绑包组成;在浏览器中运行。该捆绑包包括您在package.json文件中看到的依赖项,该文件也在浏览器中运行。

您可以很容易地使用npm来构建一个在服务器端使用的"后端"包。在这种情况下,依赖项可能不包括react等(当然,除非您想在服务器上呈现页面)