VITEと一体化した電子CLI
電子ビイト
An Electron CLI integrated with Vite
機能
用途
インストール
npm i electron-vite -D
開発&ビルド
プロジェクトで
electron-vite
がインストールされている場合、electron-vite
バイナリと直接npx electron-vite
またはpackage.json
ファイル:{
"scripts": {
"start": "electron-vite preview", // start electron app to preview production build
"dev": "electron-vite dev", // start dev server and electron app
"prebuild": "electron-vite build" // build for production
}
}
レンダラプロセスHMRを使用するには、environment variables
ウィンドウブラウザがローカルHTMLファイルまたはリモートURLを読み込むかどうかを確認します.function createWindow() {
// Create the browser window
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, '../preload/index.js')
}
})
// Load the remote URL for development or the local html file for production
if (!app.isPackaged && process.env['ELECTRON_RENDERER_URL']) {
mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL'])
} else {
mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'))
}
}
注意:開発用のレンダラプロセスindex.html
ファイルを使用してスクリプトコードを参照する必要があります<script type="module">
.プロジェクトディレクトリ
├──src
| ├──main
| | ├──index.js
| | └──...
| ├──preload
| | ├──index.js
| | └──...
| └──renderer
| ├──src
| ├──index.html
| └──...
├──electron.vite.config.js
└──package.json
始める
クローンelectron-vite-boilerplate またはcreate-electron プロジェクトを足場にするツール.
構成
設定ファイル
走るとき
electron-vite
コマンドラインから、電子viteは自動的に設定ファイルをelectron.vite.config.js
プロジェクトのルート.最も基本的な設定ファイルは次のようになります.// electron.vite.config.js
export default {
main: {
// vite config options
},
preload: {
// vite config options
},
renderer: {
// vite config options
}
}
また、--config
CLIオプション(cwd
):electron-vite --config my-config.js
ヒントelectron-vite
サポートts
or mjs
設定ファイル.コンフィグ
以来
electron-vite
TypeScript型の船では、IDEのIntelliSenseにJSDOCタイプのヒントを使用できます./**
* @type {import('electron-vite').UserConfig}
*/
const config = {
// ...
}
export default config
また、defineConfig
and defineViteConfig
JSDoc注釈を必要とせずにIntelliSenseを提供するヘルパーimport { defineConfig, defineViteConfig } from 'electron-vite'
export default defineConfig({
main: {
// ...
},
preload: {
// ...
},
renderer: defineViteConfig(({ command, mode }) => {
// conditional config use defineViteConfig
// ...
})
})
ヒント:defineViteConfig
からの輸出Vite
.設定リファレンス
参照vitejs.dev
設定プリセット
メインのビルドオプション
outdir :
out\main
(プロジェクトルートに関連する)ターゲット
node*
, 自動的にノードのターゲットElectron
. 例えば、電子17のノードターゲットはnode16.13
リブ.エントリ
src\main\{index|main}.{js|ts|mjs|cjs}
(プロジェクトルートに対して)空の文字列が見つからなかった場合はリブ.形式
cjs
ロールローション.外部
electron
すべての組み込みモジュールプリロード用のビルドオプション
outdir :
out\preload
(プロジェクトルートに関連する)ターゲット:
main
リブ.エントリ
src\preload\{index|preload}.{js|ts|mjs|cjs}
(プロジェクトルートに対して)空の文字列が見つからなかった場合はリブ.形式
cjs
ロールローション.外部:同じ
main
レンダラのビルドオプション
ルート:
src\renderer
(プロジェクトルートに関連する)outdir :
out\renderer
(プロジェクトルートに関連する)ターゲット
chrome*
, 自動的に一致するクロムターゲットElectron
. 例えば、電子17のクロムターゲットはchrome98
リブ.エントリ
src\renderer\index.html
(プロジェクトルートに対して)空の文字列が見つからなかった場合はpolyfillmodulepreload :
false
, ポリフィルの必要はないModule Preload
電子レンダラ用ロールローション.外部:同じ
main
メインとプリロードのオプションを定義する
ウェブ開発では、Viteは変わるでしょう
'process.env.'
to '({}).'
. これは理にかなって正しい.しかし、nodejs開発では、我々は時々使用する必要がありますprocess.env
, so electron-vite
このようなグローバル変数置換を再定義するには、config define fieldsを自動的に追加します:export default {
main: {
define: {
'process.env': 'process.env'
}
}
}
注意:既存のプロジェクトでこれらの設定を使用する場合は、VITEプラグインvite-plugin-electron-config よくある質問
電子アプリが複数の窓を持つとき、どのように、私は構成しますか?
あなたの電子アプリが複数のウィンドウを持っているとき、それは複数のHTMLファイルまたはプリロードファイルがあることを意味します.次のように設定ファイルを変更できます.
export default {
main: {},
preload: {
build: {
rollupOptions: {
input: {
browser: resolve(__dirname, 'src/preload/browser.ts'),
webview: resolve(__dirname, 'src/preload/webview.ts')
}
}
}
},
renderer: {
build: {
rollupOptions: {
input: {
browser: resolve(__dirname, 'src/renderer/browser.html'),
webview: resolve(__dirname, 'src/renderer/webview.html')
}
}
}
}
}
CLIオプション
CLIオプションの完全なリストのために、あなたは走ることができます
npx electron-vite -h
プロジェクトで.以下のフラグはコマンドラインインターフェイスを使用します.--ignoreConfigWarning
: ブール、設定がないときに警告を無視します--outDir
: string , output directory (デフォルト: out )API
ビルド
タイプシグネチャ
async function build(inlineConfig: InlineConfig = {}): Promise<void>
使用例const path = require('path')
const { build } = require('electron-vite')
;(async () => {
await build({
build: {
outDir: 'out'
rollupOptions: {
// ...
}
}
})
})()
CreateServer
タイプシグネチャ
async function createServer(inlineConfig: InlineConfig = {}): Promise<void>
使用例const { createServer } = require('electron-vite')
;(async () => {
await createServer({
server: {
port: 1337
}
})
})()
プレビュー
タイプシグネチャ
async function preview(inlineConfig: InlineConfig = {}): Promise<void>
使用例const { preview } = require('electron-vite')
;(async () => {
await preview({})
})()
インライン
インタフェースを拡張するUserConfig 追加のプロパティ
ignoreConfigWarning
: 設定するfalse
コンフィグがないときに警告を無視するにはbase
ベースのパブリックパスを電子に設定する必要がないため、プロパティを指定します.解像度
タイプシグネチャ
async function resolveConfig(
inlineConfig: InlineConfig,
command: 'build' | 'serve',
defaultMode = 'development'
): Promise<ResolvedConfig>
Reference
この問題について(VITEと一体化した電子CLI), 我々は、より多くの情報をここで見つけました https://dev.to/alex114/an-electron-cli-integrated-with-vite-4be6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol