使用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.
我会说这些都是devDependencies
为什么create-react-app将它们放在这里?
答案 0 :(得分:23)
这是其中一个最新版本的故意更改。
对于生成静态捆绑包的前端应用程序而言,这种区别非常随意。从技术上讲,您不需要服务器上的任何这些依赖项,甚至不需要运行时的依赖项。因此,通过该逻辑,即使react
可能被视为开发依赖。
我们曾经尝试将它们分开,但如上所述,它首先并不是真正一致的。没有技术原因可以解释为什么这种区别对于没有Node运行时的应用程序很有用。此外,它曾经导致一些没有安装开发依赖项的Heroku部署出现问题(因此无法在服务器上构建项目或在部署之前对其进行测试)。
最后,我们将所有内容都放入了依赖项中。如果您不同意,您可以随时重新排列package.json
,因为您认为合理。
答案 1 :(得分:1)
如果您正在构建的应用程序是一个库,您希望发布其他人使用,那么这些都是开发依赖项。
基本上我的理解是,如果你有一个可以两种方式使用的模块:
npm i
在这种情况下,将它们放在dev依赖项中是有意义的。
在您的情况下,人们将克隆您的项目进行开发。并通过托管的方式使用它。
希望这会有所帮助。