이“react-scripts eject”명령은 무엇을합니까?


108

뭐라고합니까 npm run eject명령은 무엇입니까? 다른 명령이 시작, 빌드, 테스트와 같은 기능을 이해합니다. 그러나 꺼내는 것에 대해서는 전혀 모릅니다.


2
이 명령이 적용되었는지 확인 / 확인하는 방법은 무엇입니까?
AlexNikonov

답변:


160

create-react-app은 내부적으로 사용하는 모든 npm 모듈을 캡슐화하므로 package.json은 걱정할 필요없이 매우 깨끗하고 간단합니다.

그러나 더 복잡한 작업을 시작하고 모듈과 상호 작용할 수있는 모듈을 설치하려면 create-react-app이 내부에서 사용하고있는 경우 이러한 새 모듈은 사용 가능한 것이 무엇인지 알아야합니다. 즉, create-react가 있어야합니다. -app un-abstract 그들을.

본질적으로 그것이하는 일입니다 react-scripts eject. 그것은 후드 아래에 설치된 것을 숨기는 것을 멈추고 대신 모든 사람들이 볼 수 있도록 프로젝트의 package.json에 이러한 것들을 배출합니다.


3
@ Sergii 답변이 더 정확합니다. Eject는 package.json 및 NPM 모듈뿐만 아니라 다른 것 (babel, webpack, eslint 등)도 포함합니다. github.com/facebook/create-react-app/blob/master/packages/…
Bruno Monteiro

69
npm run eject

참고 : 이것은 단방향 작업입니다. 일단 당신 eject은 돌아갈 수 없습니다!

빌드 도구 및 구성 선택이 만족스럽지 않은 경우 eject언제든지 가능합니다. 이 명령은 프로젝트에서 단일 빌드 종속성을 제거합니다.

대신 모든 구성 파일과 전이 종속성 (Webpack, Babel, ESLint 등)을 프로젝트에 바로 복사하여 전체 제어 권한을 갖습니다. 제외한 모든 명령 eject은 여전히 ​​작동하지만 복사 된 스크립트를 가리 키므로 조정할 수 있습니다. 이 시점에서 당신은 당신 자신입니다.

을 사용할 필요가 없습니다 eject. 선별 된 기능 세트는 중소 규모 배포에 적합하며이 기능을 사용할 의무가 없다고 느껴서는 안됩니다. 그러나 준비가되었을 때 사용자 정의 할 수없는 경우이 도구가 유용하지 않다는 것을 알고 있습니다.

문서 링크


꺼내기의 대안

꺼내면 무엇이든 사용자 정의 할 수 있지만 그 시점부터 구성과 스크립트를 직접 유지해야합니다. 유사한 프로젝트가 많은 경우 이는 어려울 수 있습니다. 이러한 경우에는 꺼내는 대신 포크 react-scripts및 기타 필요한 패키지를 사용하는 것이 좋습니다 . 이 기사에서는이 를 수행하는 방법에 대해 자세히 설명합니다. 이 문제 에서 더 많은 토론을 찾을 수 있습니다 .


다시 더하기를 사용하여 돌아갈 수 있습니다.npm install react-scripts
Ashish Kamble

저는이 두 가지 접근 방식에 완전히 불만족 스럽습니다. 당신은 명백한 이유없이 고대의 의존성을 가지고 있습니다. 두 가지 접근 방식 모두 이러한 문제를 숨기고 개발 노력을 프로젝트에서 막 다른 코드로 분산시킵니다. 적절한 종속성 관리를 대체 할 수 없습니다.
Árpád Magosányi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.