職場で create-react-app (CRA) から Vite への移行に成功したことを共有できることを嬉しく思います! ?
切り替えは簡単ではありませんでしたが、必要でした。私たちのアプリはますます遅くなり、開発者エクスペリエンス (DX) が低下していました。アプリの再起動が非常に遅いため、ノートパソコンを一日中オンにしたままになっていました。 node_modules を削除して再インストールし、アプリを起動しようとした場合、すべてがダウンロードされて再び起動するまで待つだけで 1 時間無駄になる可能性があります。アプリの起動には通常 12 ~ 15 分かかりますが、特に緊急のバグ レポートに対処する場合には大幅な遅れが生じます。さらに、CRA は非推奨となり、React アプリケーションのブートストラップには推奨されなくなりました。
なぜVite?
最初は、と宣伝されているRspackの使用を検討しました
より強力な機能と優れた生産性を備えた、Webpack のドロップイン代替品。
しかし、移行は私が期待していたほどスムーズではありませんでした。 Rspack は運用準備が整いつつありますが (この記事の執筆時点ではバージョン 1.0.0-beta.4)、私はより成熟し、実戦テスト済みのソリューションである Vite.
を選択することにしました。Webpack や CRA から離れたことで、これらのツールとその背後にある努力に対する新たな感謝の気持ちが生まれました。これらにより、開発プロセスの大部分が簡素化され、すぐに使用できるセットアップが提供されます。
いつか CRA や Webpack に代わる真のドロップイン機能が登場して、Vite などのツールに切り替えるときに大規模なファイル変更を行う必要がなくなることを願っています。
Webpack、Vite、Rspack が何なのかわからない場合は、前回の投稿でこのウサギの穴を掘り下げ、Webpack とその機能について調べました。 Vite と Rspack は、同様の仕事を行う最新のツールですが、より効率的です。
古いアプリを Vite に移行する方法を説明する前に、開発環境と運用環境で Vite を使用した短い経験の中で遭遇した長所と短所を共有したいと思います。
注意:私がテストしているラップトップはかなり古いものです。より良いスペックを備えた新しいマシンでは、2 回目の起動の起動時間は 20 ~ 30 秒ほどでした。
Webpackを使用
ヴィテと一緒
これは最も重要なステップです。広範な調査が不可欠です。私は Reddit を閲覧して、CRA から Vite に移行した他の開発者の経験について読みました。ほとんどの人が、このプロセスは難しいが、努力する価値があることに同意しました。さらに、このトピックに関する公式のチュートリアルやドキュメントは現在存在しないため、CRA アプリを Vite に移行するために必要な手順に関するいくつかのブログ投稿を読みました。
yarn remove react-scripts yarn add vite @vitejs/plugin-react --dev
et à la racine du projet
import react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; export default defineConfig({ plugins: [react()], build: { // to output your build into build dir the same as Webpack outDir: 'build', }, server: { open: true, port: 3000, }, });
❌ ✅
yarn add vite-plugin-eslint --dev
import react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; import eslintPlugin from 'vite-plugin-eslint'; export default defineConfig({ plugins: [react(), eslintPlugin()], build: { outDir: 'build', }, server: { open: true, port: 3000, }, });
❌
import Logo from 'assets/images/logo.svg'; ✅
2. ResolveglobalCeci n'est pas défini.
variable globale « globalThis » dans une application Webpack
window.global ||= window; // just double checked my code and I'm a bit skeptical of why I'm not using // `window.globalThis`and why my code is working with `window.global` ?
3. Générez des cartes sources pour la surveillance des erreurs.
import react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; import eslintPlugin from 'vite-plugin-eslint'; export default defineConfig({ plugins: [react(), eslintPlugin()], build: { outDir: 'build', sourcemap: true, }, server: { open: true, port: 3000, }, });
4. Corrigez les variables SASS globales.
//theme.scss ❌ :export { primaryColor: $app-primary; secondaryColor: $secondary; .... } import theme from '../styles/theme.scss';Hello World
Sera remplacé par
// theme.js ✅ const theme = { primaryColor: '#10142a', secondaryColor: '#2695a2', ..... } export default theme; import theme from '../styles/theme.js';Hello World
5. Gérez les importations absolues pour les fichiers .jsx.
import react from '@vitejs/plugin-react'; import { defineConfig } from 'vite'; import eslintPlugin from 'vite-plugin-eslint'; export default defineConfig({ plugins: [react(), eslintPlugin()], build: { outDir: 'build', sourcemap: true, }, resolve: { alias: [ { find: 'actions', replacement: '/src/actions' }, { find: 'assets', replacement: '/src/assets' }, { find: 'components', replacement: '/src/components' }, ..... { find: 'styles', replacement: '/src/styles' }, ], }, server: { open: true, port: 3000, }, });
6. Gérez les importations absolues pour les fichiers **.scss.**
import MyComponent from 'components/MyComponent'; import styles from 'styles/app.scss';
// index.jsx import React from 'react'; import { render } from 'react-dom'; import Main from './pages/Main'; // Import SCSS globally import './global.scss'; render(, document.querySelector('#root')); // global.scss .class1{...} .class2{...} ... // cut & paste classes from styles/app.scss here // then drop that cursed file
alors je les utiliserais comme du CSS vanille
7. Résolvez les problèmes de bibliothèque tierce.
La transition de create-react-app à Vite a été une expérience difficile mais enrichissante. Les améliorations de performances à elles seules en valent la peine, et je pense que cela augmentera considérablement à la fois la productivité des développeurs et la maintenabilité globale du projet. En traitant soigneusement ces problèmes, vous pouvez tirer le meilleur parti des outils modernes de Vite et améliorer l'efficacité de votre flux de travail de développement.
以上がCreate-React-App から Vite への移行: レガシー アプリケーションのパフォーマンスの向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。