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

时间:2016-05-18 02:23:07

标签: javascript node.js reactjs npm

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

让我们以此项目为例 - counter

它包含package.json file。如果我们查看此文件的内容,我们会看到其中包含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之间有什么区别但我不明白为什么该项目会在{{reactreact-domredux下列出1}}部分。根据我的理解,它是一个前端项目,不需要在服务器上安装任何可以在生产中工作的东西。

1 个答案:

答案 0 :(得分:0)

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

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

您可以轻松使用npm来构建"后端"包在服务器端使用。在这种情况下,依赖关系可能不包括react等(当然,除非你想在服务器上呈现页面)