npm run eject命令做什么?我确实理解其他命令的功能,比如启动、构建、测试。但不知道什么是弹出。
当前回答
eject:是一个高级操作,它允许你在Create-React-App(react-scripts)下自定义配置。
在做弹出之前,你需要了解后果:这是一个单向操作!
我鼓励你做eject的唯一原因是:学习构建过程(create-react-app)是如何工作的。
在eject之前还需要做一件事,就是将项目提交给git。如果您的当前项目还没有添加到git中。NPM运行弹出或纱线弹出将失败。
其他回答
React-scripts基本上将所有配置和样板包封装在一个依赖项中,因此您不必从头开始配置整个项目。但是,在某些情况下,您可能希望覆盖这些配置以进行构建自定义或其他更具体的内容。因此,它提供了弹出功能,以便您可以控制这些配置。包括lint,捆绑,代码分割等。
eject:是一个高级操作,它允许你在Create-React-App(react-scripts)下自定义配置。
在做弹出之前,你需要了解后果:这是一个单向操作!
我鼓励你做eject的唯一原因是:学习构建过程(create-react-app)是如何工作的。
在eject之前还需要做一件事,就是将项目提交给git。如果您的当前项目还没有添加到git中。NPM运行弹出或纱线弹出将失败。
有一些包可以在不弹出的情况下进行自定义,就像react脚本和自定义之间的中间件一样:
https://github.com/arackaf/customize-cra https://github.com/harrysolovay/rescripts https://github.com/gsoft-inc/craco
npm run eject
注意:这是一个单向操作。一旦弹射出去,就回不去了!
如果您对构建工具和配置选择不满意,可以随时弹出。此命令将从项目中删除单个构建依赖项。
相反,它会复制所有的配置文件和传递依赖项(Webpack, Babel, ESLint等)到你的项目中,这样你就可以完全控制它们。除了eject之外的所有命令仍然可以工作,但它们将指向复制的脚本,因此您可以对它们进行调整。现在你只能靠自己了。
你不需要使用eject。精选的特性集适用于小型和中型部署,您不必非得使用此特性。然而,我们明白,如果你不能自定义它,当你准备好了,这个工具就不会有用。
链接到文档
驱逐的替代方案
弹出使您可以自定义任何东西,但从那时起,您必须自己维护配置和脚本。如果你有很多类似的项目,这可能会令人生畏。在这种情况下,我们建议使用fork react-scripts和你需要的任何其他包,而不是弹出。本文将深入探讨如何做到这一点。你可以在这个问题上找到更多的讨论。
Create-react-app封装了它内部使用的所有NPM模块,这样你的包。Json将是非常干净和简单的,你不必担心它。
然而,如果你想开始做更复杂的事情,并安装可能与create-react-app在底层使用的模块交互的模块,这些新模块需要知道哪些是可用的,哪些是不可用的,这意味着你需要让create-react-app对它们进行反抽象。
从本质上讲,这就是react-scripts eject所做的。它将不再隐藏它在引擎盖下安装的东西,而是将这些东西弹出到项目的包中。Json给所有人看。
推荐文章
- 这个“react-scripts eject”命令是做什么的?
- js:将一个组件包装成另一个组件
- 在typescript中一直使用。tsx而不是。ts有什么缺点吗?
- TypeScript React应用程序中的PropTypes
- {this.props是什么?孩子们,什么时候应该使用它?
- 反应。useState不会从props中重新加载状态
- 在Link react-router中传递道具
- Webpack。如何复制index.html到dist文件夹
- React不会加载本地图像
- Axios获取url工作,但第二个参数作为对象,它不
- 我如何使用多个引用的元素与挂钩数组?
- 组件中useState对状态更新器的多次调用会导致多次重渲染
- 什么是useState()在React?
- 如何使webpack开发服务器运行在端口80和0.0.0.0使其公开访问?
- 无法找到模块“react-materialize”的声明文件。` path/to/module-name.js `隐式具有any类型