From b93a1878c15f4f4a922fbec3f74b374e381437c3 Mon Sep 17 00:00:00 2001 From: alex8088 <244096523@qq.com> Date: Fri, 8 Dec 2023 22:03:47 +0800 Subject: [PATCH] feat: migrate to ESM --- .eslintrc.js => .eslintrc.cjs | 0 bin/electron-vite.js | 2 +- package.json | 14 +++++++++++++- rollup.config.ts | 20 ++++++++++++++------ scripts/verifyCommit.js | 4 ++-- src/cli.ts | 5 ++++- src/electron.ts | 2 +- 7 files changed, 35 insertions(+), 12 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/bin/electron-vite.js b/bin/electron-vite.js index b122b5b..e5d8d89 100644 --- a/bin/electron-vite.js +++ b/bin/electron-vite.js @@ -24,7 +24,7 @@ if (debugIndex > 0) { } function run() { - require('../dist/cli') + import('../dist/cli.mjs') } run() diff --git a/package.json b/package.json index a893403..44c3d26 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,20 @@ "name": "electron-vite", "version": "1.0.29", "description": "Electron build tooling based on Vite", - "main": "dist/index.js", + "type": "module", + "main": "dist/index.cjs", + "module": "dist/index.mjs", "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./node": { + "types": "./node.d.ts" + } + }, "bin": { "electron-vite": "bin/electron-vite.js" }, diff --git a/rollup.config.ts b/rollup.config.ts index 340ff94..66d4b5d 100644 --- a/rollup.config.ts +++ b/rollup.config.ts @@ -30,12 +30,20 @@ function clean(when: 'buildStart' | 'buildEnd', target: string): Plugin { export default defineConfig([ { input: ['src/index.ts', 'src/cli.ts'], - output: { - dir: 'dist', - entryFileNames: '[name].js', - chunkFileNames: 'chunks/lib-[hash].js', - format: 'cjs' - }, + output: [ + { + dir: 'dist', + entryFileNames: '[name].cjs', + chunkFileNames: 'chunks/lib-[hash].cjs', + format: 'cjs' + }, + { + dir: 'dist', + entryFileNames: '[name].mjs', + chunkFileNames: 'chunks/lib-[hash].mjs', + format: 'es' + } + ], external, plugins: [ clean('buildStart', 'dist'), diff --git a/scripts/verifyCommit.js b/scripts/verifyCommit.js index 5262ea7..6304258 100644 --- a/scripts/verifyCommit.js +++ b/scripts/verifyCommit.js @@ -1,7 +1,7 @@ // Invoked on the commit-msg git hook by simple-git-hooks. -const colors = require('picocolors') -const fs = require('fs') +import colors from 'picocolors' +import fs from 'node:fs' const msgPath = process.argv[2] const msg = fs.readFileSync(msgPath, 'utf-8').trim() diff --git a/src/cli.ts b/src/cli.ts index 02fbee3..c40b973 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,8 +1,11 @@ +import { createRequire } from 'node:module' import { cac } from 'cac' import colors from 'picocolors' import { LogLevel, createLogger } from 'vite' import { InlineConfig } from './config' +const _require = createRequire(import.meta.url) + const cli = cac('electron-vite') // global options @@ -160,6 +163,6 @@ cli }) cli.help() -cli.version(require('../package.json').version) +cli.version(_require('../package.json').version) cli.parse() diff --git a/src/electron.ts b/src/electron.ts index d6e5f3c..a7deb85 100644 --- a/src/electron.ts +++ b/src/electron.ts @@ -9,7 +9,7 @@ const ensureElectronEntryFile = (root = process.cwd()): void => { if (process.env.ELECTRON_ENTRY) return const pkg = path.join(root, 'package.json') if (fs.existsSync(pkg)) { - const main = require(pkg).main + const main = _require(pkg).main if (!main) { throw new Error('No entry point found for electron app, please add a "main" field to package.json') } else {