ウェブパックからあなたの反応アプリを移動するVite
12772 ワード
Viteとは
Vite そのメンテナが主張するように、「次世代フロントエンドツーリング」です.インスタントdevのサーバーは、高速ホットモジュールのリロード、最適化生産ビルド-それはすべてです.
しかし、Viteのドキュメントは、既存のWebpackアプリを移行する方法を言いません🤷 心配しないで!このガイドでは、我々は一緒にこれを介して取得します!
あなたのレポをESモジュールに変えてください
あなたの
package.json
, 次のエントリを追加します "type": "module",
抱擁モダニティ!拒否伝統!だからこそ、私たちはとにかくViteに切り替えている!VITEとプラグインのインストール
npm i --save-dev vite @vitejs/plugin-react vite-plugin-html
oryarn add vite @vitejs/plugin-react vite-plugin-html --dev
置換するスクリプト
あなたの
package.json
, おそらく以下のようなスクリプトがあります. "build": "NODE_ENV=production webpack",
"dev": "NODE_ENV=development webpack serve",
build
コマンドnpm run build
or yarn build
, 生産のためのあなたのアプリケーションをビルドします.dev
コマンドは開発サーバを起動します.これらのスクリプトを置き換える必要があります.
"build": "vite build",
"dev": "vite serve",
その上に、1つの追加コマンドを追加できます. "preview": "vite preview"
preview
コマンドは、生産用に構築されたアプリケーションを実行しているサーバーを起動します.開発サーバーを走らせましょう!
vite v2.9.1 dev server running at:
> Local: http://localhost:3000/
> Network: use --host to expose
ready in 261ms.
👁👄👁 うわー、それは速いです.ルートがあるViteを教えてください
現在開発サーバを起動した場合、Viteは
index.html
プロジェクトのルートディレクトリにあります.それがどこか他の所であるならば、Viteはそれを見つけることができなくて、代わりに空のページを表示します.これを修正するには
index.html
あなたのルートディレクトリにindex.html
イン.私の場合ではsrc/index.html
.このようにディレクトリ名をあなたのコマンドに追加することでこれを行うことができます.
"build": "vite build src",
"dev": "vite serve src",
しかし、あなたはまた、vite.config.js
プロジェクトのルートでファイルします.あなたはとにかくしばらくの間、それを必要とするので、なぜ1つの場所にすべての設定を維持する1つを作成しませんか?import { defineConfig } from 'vite';
export default defineConfig({
root: 'src',
build: {
// Relative to the root
outDir: '../dist',
},
});
プラグインの設定
今では、Vite知っている場所を見つける
index.html
ファイルを使っているなら、エラーが発生します.
私の場合は
HtmlWebpackPlugin
's templateParameters
オプションを動的にカスタムタイトルを注入するindex.html
以下のようにします. <title><%= title %></title>
new HtmlWebpackPlugin({
template: 'index.html',
templateParameters: {
title: env === 'production' ? 'My site' : `My site [${env.toUpperCase()}]`,
},
}),
ありがたいことに、我々は同じことを行うことができますvite-plugin-html
. あなたのvite.config.js
, 次のビットを追加します.import { injectHtml } from 'vite-plugin-html';
export default defineConfig({
// …
plugins: [
createHtmlPlugin({
inject: {
data: {
title: env === 'production' ? 'My site' : `My site [${env.toUpperCase()}]`,
},
},
}),
],
});
エントリモジュールをインデックスに追加します。HTMLファイル
この時点で、あなたの
index.html
ファイルは、ちょうど罰金を出すべきです.しかし、アプリケーションはまだロードされません!あなたがwebpackを使用するならば、あなたは多分また、使われました
html-webpack-plugin
注射する<script>
あなたのエントリモジュールを持つタグindex.html
.VITEこれらのタグを自動的に注入されません.あなたは自分でそれらを追加する必要があります.例えば、
<script type="module" src="./index.jsx"></script>
ああ、それはよりよいです.何かが命に達した.
プラグインの反応
わかりました、あなたが見ることができるように、我々はまだ全くそこにいません.設定する必要があります
@vitejs/plugin-react
それを反応で動作させる.あなたがまだ古典的なJSXランタイムを使用するならば、あなたのアプリはすでにこの点でロードされるかもしれません、しかし、あなたはとにかくこれらのステップに従うことを望みます.このプラグインは、自動JSXランタイム(手動ですべてのファイルで反応をインポートする必要はありませんが、おかげで)を処理するだけでなく、高速リフレッシュのような機能を追加し、Babelの統合を有効にし、はるかに.
あなたに加える
vite.config.js
ファイル:import react from '@vitejs/plugin-react';
export default defineConfig({
// …
plugins: [
// …
react({
// Use React plugin in all *.jsx and *.tsx files
include: '**/*.{jsx,tsx}',
}),
],
});
バベルプラグイン
バベルはまったく必要ないかもしれない
@babel/preset-env
and @babel/preset-react
役に立たない.しかし、時々Babelプラグインはまだ便利かもしれません.例えば、あるplugin to remove PropTypes バンドルサイズを少し小さくするために使用することができます.また、開発やテストを容易にするために、コンポーネントの表示名を追加することにより、開発やテストを容易にすることができます.
@vitejs/plugin-react
ここで救出に来るbabel
オプション.例えば、babel-plugin-styled-components
プラグイン react({
// …
babel: {
plugins: ['babel-plugin-styled-components'],
},
},
静的ファイル処理
デフォルトでは
public
ルートディレクトリに置かれたディレクトリはビルド時にコピーされます.他のファイルを持っているならばpublicDir
オプション:export default defineConfig({
// …
publicDir: '../public',
});
プロセス。環境変数問題
使っていた
process.env.NODE_ENV
私のアプリの場所の束で.この結果、コンソールに以下のエラーが発生しました.Uncaught ReferenceError: process is not defined
Viteでは、使用することができますimport.meta.env.*
代わりに.例えば、process.env.NODE_ENV
に置き換えられるimport.meta.env.NODE_ENV
.楽しむ!
今すぐあなたのアプリを参照してください、VITEによって供給!
まだやっていない我々はまだ生産でそれを実行する前にいくつかのものを微調整する必要があります.このためには、このガイドの2番目の部分を待つ必要があります.通知を取得する購読!
掃除
これらの依存関係を安全に削除することができます.
webpack
(duh)webpack-cli
webpack-dev-server
*-loader
(例)babel-loader
, style-loader
) *-webpack-plugin
(例)html-webpack-plugin
, mini-css-extract-plugin
@babel/preset-env
@babel/preset-react
webpack.config.js
WebPackの設定ファイルも削除できます.babel.config.js
, babel.config.json
, or .babelrc
を削除することができます.@vitejs/plugin-react
設定.何か行方不明?
あなたが対処する必要がある何か他の何かがあると思いますか?どうか、コメントで知らせてください!
Reference
この問題について(ウェブパックからあなたの反応アプリを移動するVite), 我々は、より多くの情報をここで見つけました https://dev.to/wojtekmaj/migrating-your-react-app-from-webpack-to-vite-inpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol