package.json: 단일 패키지 통합 (정체성 보존, dual main via extraMetadata)

name=@pieroot/nfd2nfc, appId=com.pieroot.nfd2nfc, productName=NFD2NFC 유지.
package.json main=out/lib/index.js (npm 라이브러리 진입점).
electron-builder extraMetadata.main=out/main/index.js (.app asar만 override).
react/react-dom는 devDependencies로 이동 (Vite renderer 번들에 포함).
files 필드로 npm tarball을 out/cli, out/lib, resources만으로 제한.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-09 15:42:51 +09:00
parent a24367c815
commit 1441a5c0b4
2 changed files with 145 additions and 0 deletions

38
electron.vite.config.ts Normal file
View File

@@ -0,0 +1,38 @@
import { resolve } from 'path';
import { defineConfig, externalizeDepsPlugin } from 'electron-vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
main: {
plugins: [externalizeDepsPlugin()],
build: {
rollupOptions: {
input: {
index: resolve(__dirname, 'src/main/index.ts'),
},
},
},
},
preload: {
plugins: [externalizeDepsPlugin()],
build: {
rollupOptions: {
input: {
index: resolve(__dirname, 'src/preload/index.ts'),
},
},
},
},
renderer: {
root: 'src/renderer',
plugins: [react()],
build: {
rollupOptions: {
input: {
popover: resolve(__dirname, 'src/renderer/popover/index.html'),
settings: resolve(__dirname, 'src/renderer/settings/index.html'),
},
},
},
},
});

107
package.json Normal file
View File

@@ -0,0 +1,107 @@
{
"name": "@pieroot/nfd2nfc",
"version": "2.0.0",
"description": "macOS 한글 파일명 NFD→NFC 실시간 변환 트레이 앱 + CLI + 라이브러리",
"main": "out/lib/index.js",
"types": "out/lib/index.d.ts",
"exports": {
".": {
"types": "./out/lib/index.d.ts",
"default": "./out/lib/index.js"
}
},
"bin": {
"nfd2nfc": "out/cli/index.js"
},
"files": [
"out/cli/**",
"out/lib/**",
"resources/**",
"README.md",
"LICENSE"
],
"scripts": {
"dev": "electron-vite dev",
"build:app": "electron-vite build",
"build:cli": "tsc --project tsconfig.cli.json",
"build:lib": "tsc --project tsconfig.lib.json",
"build": "npm run build:app && npm run build:cli && npm run build:lib && electron-builder",
"prepublishOnly": "npm run build:cli && npm run build:lib && chmod +x out/cli/index.js",
"preview": "electron-vite preview",
"test": "vitest run",
"test:watch": "vitest",
"lint": "eslint src --ext .ts,.tsx",
"typecheck": "tsc --noEmit && tsc --noEmit --project tsconfig.cli.json && tsc --noEmit --project tsconfig.lib.json"
},
"dependencies": {
"chokidar": "^3.6.0",
"yargs": "^17.7.2"
},
"devDependencies": {
"@types/node": "^20.14.0",
"@types/react": "^19",
"@types/react-dom": "^19",
"@types/yargs": "^17.0.32",
"@typescript-eslint/eslint-plugin": "^7.7.0",
"@typescript-eslint/parser": "^7.7.0",
"@vitejs/plugin-react": "^4.3.4",
"electron": "^35.1.5",
"electron-builder": "^26.0.12",
"electron-vite": "^2.3.0",
"eslint": "^8.57.0",
"prettier": "^3.2.5",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"typescript": "^5.4.0",
"vite": "^5.2.0",
"vitest": "^1.6.1"
},
"author": "jung-geun <pieroot.02@gmail.com>",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/jung-geun/NFD2NFC.git"
},
"bugs": {
"url": "https://github.com/jung-geun/NFD2NFC/issues"
},
"homepage": "https://github.com/jung-geun/NFD2NFC#readme",
"keywords": [
"NFD",
"NFC",
"Unicode",
"Normalization",
"macOS",
"korean",
"electron",
"tray"
],
"build": {
"appId": "com.pieroot.nfd2nfc",
"productName": "NFD2NFC",
"extraMetadata": {
"main": "out/main/index.js"
},
"files": [
"out/main/**",
"out/preload/**",
"out/renderer/**",
"resources/**",
"package.json"
],
"mac": {
"category": "public.app-category.utilities",
"icon": "resources/icon.icns",
"target": [
{
"target": "dmg",
"arch": ["arm64", "x64"]
}
]
},
"directories": {
"buildResources": "resources",
"output": "dist"
}
}
}