【2022年最新版】Electron + Next.js + TypeScript + tailwindCSS でMac/Windows用アプリを作成する【React】

JavaScript
【2022年最新版】Electron + Next.js + TypeScript でMac/Windows用アプリを作成する【React】

この記事の最終更新日: 2022年2月6日

【2022年最新版】Electron + Next.js + TypeScript でMac/Windows用アプリを作成する【React】

テキストエディタを準備

テキストエディタはVSCodeか、webstromがおすすめ。

Node.js(&npm)をインストール

nodeをまだ入れていない人はこちらからダウンロード

Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

Electronプロジェクトを作成

sampleというプロジェクトで作成する場合

$ # npm
$ npx create-next-app --example with-electron-typescript sample
$ cd sample
$ npm run build
$ npm run start

# yarn
$ yarn create next-app --example with-electron-typescript sample
$ cd sample
$ yarn build
$ yarn start

package.jsonにnameとversionを追記 productNameを変更

"name": "sample",
"version": "1.0.0",
"private": true,
"main": "main/index.js",
"productName": "sample",
"scripts": {
  "clean": "rimraf dist main renderer/out renderer/.next",
  "dev": "npm run build-electron && electron .",
  "build-renderer": "next build renderer && next export renderer",
  "build-electron": "tsc -p electron-src",
  "build": "npm run build-renderer && npm run build-electron",
...

アイコンを設定する

プロジェクト直下に「build」ディレクトリを追加し、画像を入れる。

その後package.jsonに追記する

"build": {
  "asar": true,
  "files": [
    "main",
    "renderer/out"
  ],
  "mac": {
    "target": "dmg",
    "icon": "build/icon.png"
  },
  "win": {
    "target": "nsis",
    "icon": "build/icon.png"
  }

tailwindsCSSを使えるようにする

$ npm install tailwindcss@latest postcss@latest autoprefixer@latest
$ npx tailwindcss init -p

renderer/pagesに「_app.js」を作成

// _app.js

import "tailwindcss/tailwind.css";

function MyApp({ Component, pageProps }) {
    return <Component {...pageProps} />;
}

export default MyApp;

先ほど生成された、renderer直下のtailwind.config.jsを編集。

module.exports = {
  content: ["./renderer/pages/**/*.{js,ts,jsx,tsx}",
    "./renderer/components/**/*.{js,ts,jsx,tsx}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

コマンド備忘録

$npm run clean //クリーンにする
$npm run build
$npm run dist //dmgファイル生成

$npm run dev //実行しながらコード編集できるモード

表示幅を変更

electron-srcの「index.ts」から縦と横の比率を変更可能。

// Native
import { join } from 'path'
import { format } from 'url'

// Packages
import { BrowserWindow, app, ipcMain, IpcMainEvent } from 'electron'
import isDev from 'electron-is-dev'
import prepareNext from 'electron-next'

// Prepare the renderer once the app is ready
app.on('ready', async () => {
  await prepareNext('./renderer')

  const mainWindow = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: false,
      contextIsolation: false,
      preload: join(__dirname, 'preload.js'),
    },
  })

アプリの画面を編集

renderer/pages配下のtsxファイルを編集すれば、画面が変わります。

$ npm run dev

開発中は上記のコマンドを実行してから行います。

cmd + R で画面の更新ができます。

コメント

タイトルとURLをコピーしました