【问题标题】:Why does react/redux frontend project contains production dependencies in package.json?为什么 react/redux 前端项目在 package.json 中包含生产依赖项?
【发布时间】:2016-09-14 07:47:42
【问题描述】:

我刚开始学习 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 之间有什么区别,但我不明白为什么该项目在dependencies 部分下列出reactreact-domredux。据我了解,这是一个前端项目,不需要在服务器上安装任何东西就可以在生产中工作。

【问题讨论】:

  • 所有这些项目(redux、react、react-dom)都是前端项目......不确定你在问什么? npm 是包管理器,前端/后端无所谓
  • @S.S.J 在 StackOverflow 上发布问题之前请使用谷歌搜索。
  • Package.json 不区分前端/后端。
  • @aarosil 如果它是一个前端项目,那么为什么它会在dependencies 下列出依赖项?
  • "Counter" 是一个使用 React 的 Web 应用程序。通常,应用程序中使用的库添加为dependencies

标签: javascript node.js reactjs npm


【解决方案1】:

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

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

您可以很容易地使用npm 构建一个“后端”包以供在服务器端使用。在这种情况下,依赖关系可能不包括react 等(当然,除非你想在服务器上渲染页面)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2018-10-04
    • 2015-02-16
    • 1970-01-01
    • 2012-05-24
    • 2013-10-27
    • 2020-03-12
    相关资源
    最近更新 更多