create-react-app install依赖项部分中的devDepencies

dag*_*da1 16 reactjs create-react-app

create-react-app和运行创建新项目后yarn eject.

我的package.json的依赖项部分如下所示:

  "dependencies": {
    "autoprefixer": "7.1.1",
    "babel-core": "6.25.0",
    "babel-eslint": "7.2.3",
    "babel-jest": "20.0.3",
    "babel-loader": "7.0.0",
    "babel-preset-react-app": "^3.0.1",
    "babel-runtime": "6.23.0",
    etc.
Run Code Online (Sandbox Code Playgroud)

我会说这些都是devDependencies为什么create-react-app将它们放在这里?

Dan*_*mov 26

这是其中一个最新版本的故意更改.

对于生成静态包的前端应用程序而言,这种区别非常随意.从技术上讲,您不需要服务器上的任何依赖项,甚至不需要运行时的依赖项.因此,这种逻辑甚至react可能被视为一种发展依赖.

我们曾经尝试将它们分开但是如上所述,它首先并不是真正一致的.没有技术原因可以解释为什么这种区别对于没有Node运行时的应用程序很有用.此外,它曾经导致一些没有安装开发依赖项的Heroku部署出现问题(因此无法在服务器上构建项目或在部署之前对其进行测试).

最后,我们将所有内容都放在了依赖项中.如果您不同意,您可以随时重新安排,package.json因为您认为合理.

  • 生成产品包时的构建系统将构建与主文件一起使用的依赖关系图。只要图表中的某处没有直接导入,它就不应该包含笑话或其他构建工具。 (11认同)
  • >没有技术原因可以解释为什么这种区别对于没有Node运行时的应用程序很有用.devDeps和deps在两个完全独立的环境中运行,并且保持两个隔离的可以通信/记录哪些deps在野外运行,哪些deps在CI /可信环境中运行.这对于评估安全漏洞时的评估非常有用. (3认同)
  • 但这是否意味着所有devDependencies都最终落入生产版本中并随应用程序代码一起部署?包装尺寸增加 (2认同)
  • 抱歉,我是个菜鸟 - 但在这种情况下,构建步骤如何知道不在最终的可发行版本中发送 Jest(等)? (2认同)