Que fait cette commande «react-scripts eject»?

106

Que fait la npm run ejectcommande? Je comprends ce que font les autres commandes comme démarrer, construire, tester. Mais aucune idée de l'éjection.

Ishan Patel
la source
2
comment vérifier / vérifier cette commande a-t-elle été appliquée ou non?
AlexNikonov

Réponses:

157

create-react-app encapsule tous les modules npm qu'il utilise en interne, de sorte que votre package.json sera très propre et simple sans que vous ayez à vous en soucier.

Cependant, si vous voulez commencer à faire des choses plus complexes et à installer des modules qui peuvent interagir avec les modules que create-react-app utilise sous le capot, ces nouveaux modules doivent savoir ce qui est disponible et non, ce qui signifie que vous devez avoir create-react -app les supprimer.

C'est essentiellement ce qui react-scripts ejectfait. Il cessera de cacher ce qu'il a installé sous le capot et à la place, il éjectera ces choses dans le package.json de votre projet pour que tout le monde puisse le voir.

casieber
la source
3
La réponse @Sergii est plus précise. Eject ne concerne pas seulement les modules package.json et NPM, il inclut d'autres éléments (babel, webpack, eslint, etc.) github.com/facebook/create-react-app/blob/master/packages/…
Bruno Monteiro
68
npm run eject

Remarque: il s'agit d'une opération à sens unique. Une fois que vous eject, vous ne pouvez plus revenir en arrière!

Si vous n'êtes pas satisfait de l'outil de génération et des choix de configuration, vous pouvez ejectà tout moment. Cette commande supprimera la dépendance de construction unique de votre projet.

Au lieu de cela, il copiera tous les fichiers de configuration et les dépendances transitives (Webpack, Babel, ESLint, etc.) directement dans votre projet afin que vous ayez un contrôle total sur eux. Toutes les commandes sauf ejectfonctionneront toujours, mais elles pointeront vers les scripts copiés afin que vous puissiez les modifier. À ce stade, vous êtes seul.

Vous n'avez jamais besoin de l'utiliser eject. L'ensemble de fonctionnalités organisées convient aux déploiements petits et moyens, et vous ne devriez pas vous sentir obligé d'utiliser cette fonctionnalité. Cependant, nous comprenons que cet outil ne serait pas utile si vous ne pouviez pas le personnaliser lorsque vous y êtes prêt.

lien vers la documentation


Alternatives à l'éjection

L'éjection vous permet de personnaliser n'importe quoi, mais à partir de ce moment, vous devez gérer vous-même la configuration et les scripts. Cela peut être décourageant si vous avez de nombreux projets similaires. Dans de tels cas, au lieu d'éjecter, nous vous recommandons de fork react-scriptset de tout autre paquet dont vous avez besoin. Cet article explique comment le faire en profondeur. Vous pouvez trouver plus de discussion dans ce numéro.

Sergii
la source
nous pouvons revenir en utilisant l'ajout à nouveaunpm install react-scripts
Ashish Kamble
Je ne suis absolument pas satisfait de ces deux approches. Vous avez d'anciennes dépendances sans raison apparente. Les deux approches cachent ces problèmes et détournent les efforts de développement du projet vers un code sans issue. Il n'y a pas de substitut à une bonne gestion des dépendances.
Árpád Magosányi le