pack: add .editorconfig and use tab instead of space
This commit is contained in:
1 parent
be3638b9d3
commit
be7a8ac3ea
27 files changed
+571
-560
No files matched your search
@@ -0,0 +1,11 @@
|
|||||||
|
# http://editorconfig.org
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 2
|
||||||
|
insert_final_newline = true
|
||||||
|
max_line_length = 80
|
||||||
|
trim_trailing_whitespace = true
|
||||||
+29
-29
@@ -1,31 +1,31 @@
|
|||||||
{
|
{
|
||||||
"root": true,
|
"root": true,
|
||||||
"parser": "vue-eslint-parser",
|
"parser": "vue-eslint-parser",
|
||||||
"parserOptions": {
|
"parserOptions": {
|
||||||
"parser": "@typescript-eslint/parser",
|
"parser": "@typescript-eslint/parser",
|
||||||
"sourceType": "module",
|
"sourceType": "module",
|
||||||
"ecmaVersion": 2022,
|
"ecmaVersion": 2022,
|
||||||
"ecmaFeatures": {
|
"ecmaFeatures": {
|
||||||
"jsx": true
|
"jsx": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
"node": true,
|
"node": true,
|
||||||
"es6": true
|
"es6": true
|
||||||
},
|
},
|
||||||
"extends": ["standard", "plugin:vue/vue3-recommended", "prettier"],
|
"extends": ["standard", "plugin:vue/vue3-recommended", "prettier"],
|
||||||
"globals": {
|
"globals": {
|
||||||
"__static": true
|
"__static": true
|
||||||
},
|
},
|
||||||
"plugins": ["vue"],
|
"plugins": ["vue"],
|
||||||
"rules": {
|
"rules": {
|
||||||
"arrow-parens": 0,
|
"arrow-parens": 0,
|
||||||
"generator-star-spacing": 0,
|
"generator-star-spacing": 0,
|
||||||
"no-case-declarations": 0,
|
"no-case-declarations": 0,
|
||||||
"array-callback-return": 0,
|
"array-callback-return": 0,
|
||||||
"no-trailing-spaces": 1,
|
"no-trailing-spaces": 1,
|
||||||
"no-control-regex": 0,
|
"no-control-regex": 0,
|
||||||
"no-useless-constructor": 0,
|
"no-useless-constructor": 0,
|
||||||
"node/no-deprecated-api": 0
|
"node/no-deprecated-api": 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+12
-12
@@ -1,16 +1,16 @@
|
|||||||
import { generateSidebar } from 'vitepress-sidebar'
|
import { generateSidebar } from 'vitepress-sidebar'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
title: 'Vutron',
|
title: 'Vutron',
|
||||||
description: 'Quick Start Templates for Vite + Vue 3 + Electron',
|
description: 'Quick Start Templates for Vite + Vue 3 + Electron',
|
||||||
themeConfig: {
|
themeConfig: {
|
||||||
sidebar: generateSidebar({
|
sidebar: generateSidebar({
|
||||||
root: 'docs',
|
root: 'docs',
|
||||||
collapsible: false,
|
collapsible: false,
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
underscoreToSpace: true,
|
underscoreToSpace: true,
|
||||||
hyphenToSpace: true
|
hyphenToSpace: true
|
||||||
}),
|
}),
|
||||||
socialLinks: [{ icon: 'github', link: 'https://github.com/jooy2/vutron' }]
|
socialLinks: [{ icon: 'github', link: 'https://github.com/jooy2/vutron' }]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+21
-21
@@ -21,9 +21,9 @@ For projects that use the **Native Node Module**, add the following script to yo
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "electron-builder install-app-deps"
|
"postinstall": "electron-builder install-app-deps"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -49,23 +49,23 @@ Below is an unnecessary `node_modules` file pattern that can further save bundle
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
"!**/.*",
|
"!**/.*",
|
||||||
"!**/node_modules/**/{CONTRIBUTORS,CNAME,AUTHOR,TODO,CONTRIBUTING,COPYING,INSTALL,NEWS,PORTING,Makefile,htdocs,CHANGELOG,ChangeLog,changelog,README,Readme,readme,test,sample,example,demo,composer.json,tsconfig.json,jsdoc.json,tslint.json,typings.json,gulpfile,bower.json,package-lock,Gruntfile,CMakeLists,karma.conf,yarn.lock}*",
|
"!**/node_modules/**/{CONTRIBUTORS,CNAME,AUTHOR,TODO,CONTRIBUTING,COPYING,INSTALL,NEWS,PORTING,Makefile,htdocs,CHANGELOG,ChangeLog,changelog,README,Readme,readme,test,sample,example,demo,composer.json,tsconfig.json,jsdoc.json,tslint.json,typings.json,gulpfile,bower.json,package-lock,Gruntfile,CMakeLists,karma.conf,yarn.lock}*",
|
||||||
"!**/node_modules/**/{man,benchmark,node_modules,spec,cmake,browser,vagrant,doxy*,bin,obj,obj.target,example,examples,test,tests,doc,docs,msvc,Xcode,CVS,RCS,SCCS}{,/**/*}",
|
"!**/node_modules/**/{man,benchmark,node_modules,spec,cmake,browser,vagrant,doxy*,bin,obj,obj.target,example,examples,test,tests,doc,docs,msvc,Xcode,CVS,RCS,SCCS}{,/**/*}",
|
||||||
"!**/node_modules/**/*.{conf,png,pc,coffee,txt,spec.js,ts,js.flow,html,def,jst,xml,ico,in,ac,sln,dsp,dsw,cmd,vcproj,vcxproj,vcxproj.filters,pdb,exp,obj,lib,map,md,sh,gypi,gyp,h,cpp,yml,log,tlog,Makefile,mk,c,cc,rc,xcodeproj,xcconfig,d.ts,yaml,hpp}",
|
"!**/node_modules/**/*.{conf,png,pc,coffee,txt,spec.js,ts,js.flow,html,def,jst,xml,ico,in,ac,sln,dsp,dsw,cmd,vcproj,vcxproj,vcxproj.filters,pdb,exp,obj,lib,map,md,sh,gypi,gyp,h,cpp,yml,log,tlog,Makefile,mk,c,cc,rc,xcodeproj,xcconfig,d.ts,yaml,hpp}",
|
||||||
"!**/node_modules/**/node-v*-x64{,/**/*}",
|
"!**/node_modules/**/node-v*-x64{,/**/*}",
|
||||||
"!**/node_modules/bluebird/js/browser{,/**/*}",
|
"!**/node_modules/bluebird/js/browser{,/**/*}",
|
||||||
"!**/node_modules/bluebird/js/browser{,/**/*}",
|
"!**/node_modules/bluebird/js/browser{,/**/*}",
|
||||||
"!**/node_modules/source-map/dist{,/**/*}",
|
"!**/node_modules/source-map/dist{,/**/*}",
|
||||||
"!**/node_modules/lodash/fp{,/**/*}",
|
"!**/node_modules/lodash/fp{,/**/*}",
|
||||||
"!**/node_modules/async/!(dist|package.json)",
|
"!**/node_modules/async/!(dist|package.json)",
|
||||||
"!**/node_modules/async/internal{,/**/*}",
|
"!**/node_modules/async/internal{,/**/*}",
|
||||||
"!**/node_modules/ajv/dist{,/**/*}",
|
"!**/node_modules/ajv/dist{,/**/*}",
|
||||||
"!**/node_modules/ajv/scripts{,/**/*}",
|
"!**/node_modules/ajv/scripts{,/**/*}",
|
||||||
"!**/node_modules/node-pre-gyp/!(lib|package.json)",
|
"!**/node_modules/node-pre-gyp/!(lib|package.json)",
|
||||||
"!**/node_modules/node-pre-gyp/lib/!(util|pre-binding.js|node-pre-gyp.js)",
|
"!**/node_modules/node-pre-gyp/lib/!(util|pre-binding.js|node-pre-gyp.js)",
|
||||||
"!**/node_modules/node-pre-gyp/lib/util/!(versioning.js|abi_crosswalk.json)",
|
"!**/node_modules/node-pre-gyp/lib/util/!(versioning.js|abi_crosswalk.json)",
|
||||||
"!**/node_modules/source-map-support/browser-source-map-support.js",
|
"!**/node_modules/source-map-support/browser-source-map-support.js",
|
||||||
"!**/node_modules/json-schema/!(package.json|lib)"
|
"!**/node_modules/json-schema/!(package.json|lib)"
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
+94
-94
@@ -1,98 +1,98 @@
|
|||||||
{
|
{
|
||||||
productName: 'Vutron',
|
productName: 'Vutron',
|
||||||
appId: 'com.vutron.vutron',
|
appId: 'com.vutron.vutron',
|
||||||
asar: true,
|
asar: true,
|
||||||
extends: null,
|
extends: null,
|
||||||
compression: 'maximum',
|
compression: 'maximum',
|
||||||
copyright: 'ⓒ 2022 ${author}',
|
copyright: 'ⓒ 2022 ${author}',
|
||||||
artifactName: '${productName} ${version}_${arch}.${ext}',
|
artifactName: '${productName} ${version}_${arch}.${ext}',
|
||||||
directories: {
|
directories: {
|
||||||
buildResources: 'buildRes',
|
buildResources: 'buildRes',
|
||||||
output: './dist/release/${version}'
|
output: './dist/release/${version}'
|
||||||
},
|
},
|
||||||
/* A list of files not to be included in the build. */
|
/* A list of files not to be included in the build. */
|
||||||
files: [
|
files: [
|
||||||
/*
|
/*
|
||||||
(Required) The files and folders listed below should not be included in the build.
|
(Required) The files and folders listed below should not be included in the build.
|
||||||
*/
|
*/
|
||||||
'dist/**/*',
|
'dist/**/*',
|
||||||
'!docs/**/*',
|
'!docs/**/*',
|
||||||
'!dist/release/**/*',
|
'!dist/release/**/*',
|
||||||
'!dist/main/index.ts'
|
'!dist/main/index.ts'
|
||||||
],
|
],
|
||||||
mac: {
|
mac: {
|
||||||
bundleVersion: '1.0',
|
bundleVersion: '1.0',
|
||||||
hardenedRuntime: true,
|
hardenedRuntime: true,
|
||||||
gatekeeperAssess: false,
|
gatekeeperAssess: false,
|
||||||
icon: 'buildRes/icons/icon.icns',
|
icon: 'buildRes/icons/icon.icns',
|
||||||
type: 'distribution',
|
type: 'distribution',
|
||||||
target: [
|
target: [
|
||||||
{
|
{
|
||||||
target: 'dmg',
|
target: 'dmg',
|
||||||
arch: ['x64', 'arm64', 'universal']
|
arch: ['x64', 'arm64', 'universal']
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
dmg: {
|
dmg: {
|
||||||
contents: [
|
contents: [
|
||||||
{
|
{
|
||||||
x: 410,
|
x: 410,
|
||||||
y: 150,
|
y: 150,
|
||||||
type: 'link',
|
type: 'link',
|
||||||
path: '/Applications'
|
path: '/Applications'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
x: 130,
|
x: 130,
|
||||||
y: 150,
|
y: 150,
|
||||||
type: 'file'
|
type: 'file'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
sign: false
|
sign: false
|
||||||
},
|
},
|
||||||
win: {
|
win: {
|
||||||
icon: 'buildRes/icons/icon.ico',
|
icon: 'buildRes/icons/icon.ico',
|
||||||
target: [
|
target: [
|
||||||
{
|
{
|
||||||
target: 'appx',
|
target: 'appx',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
target: 'zip',
|
target: 'zip',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
target: 'portable',
|
target: 'portable',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
target: 'nsis',
|
target: 'nsis',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
portable: {
|
portable: {
|
||||||
artifactName: '${productName} ${version}_${arch} Portable.${ext}'
|
artifactName: '${productName} ${version}_${arch} Portable.${ext}'
|
||||||
},
|
},
|
||||||
nsis: {
|
nsis: {
|
||||||
oneClick: true
|
oneClick: true
|
||||||
},
|
},
|
||||||
linux: {
|
linux: {
|
||||||
executableName: 'vutron',
|
executableName: 'vutron',
|
||||||
icon: 'buildRes/icons',
|
icon: 'buildRes/icons',
|
||||||
category: 'Utility',
|
category: 'Utility',
|
||||||
target: [
|
target: [
|
||||||
{
|
{
|
||||||
target: 'snap',
|
target: 'snap',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
target: 'deb',
|
target: 'deb',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
target: 'rpm',
|
target: 'rpm',
|
||||||
arch: 'x64'
|
arch: 'x64'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+59
-59
@@ -1,61 +1,61 @@
|
|||||||
{
|
{
|
||||||
"name": "vutron",
|
"name": "vutron",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Quick Start Templates for Vite + Vue 3 + Electron",
|
"description": "Quick Start Templates for Vite + Vue 3 + Electron",
|
||||||
"homepage": "https://github.com/jooy2/vutron",
|
"homepage": "https://github.com/jooy2/vutron",
|
||||||
"author": "jooy2 <jootc.help@gmail.com>",
|
"author": "jooy2 <jootc.help@gmail.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"main": "dist/main/index.js",
|
"main": "dist/main/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "cross-env NODE_ENV=development vite",
|
"dev": "cross-env NODE_ENV=development vite",
|
||||||
"build": "npm run build:pre && electron-builder -wml",
|
"build": "npm run build:pre && electron-builder -wml",
|
||||||
"build:pre": "npm run format:fix && vue-tsc --noEmit && cross-env NODE_ENV=production vite build",
|
"build:pre": "npm run format:fix && vue-tsc --noEmit && cross-env NODE_ENV=production vite build",
|
||||||
"build:dir": "npm run build:pre && electron-builder --dir",
|
"build:dir": "npm run build:pre && electron-builder --dir",
|
||||||
"build:mac": "npm run build:pre && CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --mac",
|
"build:mac": "npm run build:pre && CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder --mac",
|
||||||
"build:linux": "npm run build:pre && electron-builder --linux",
|
"build:linux": "npm run build:pre && electron-builder --linux",
|
||||||
"build:win": "npm run build:pre && electron-builder --windows",
|
"build:win": "npm run build:pre && electron-builder --windows",
|
||||||
"lint": "eslint --ext .js,.ts,.vue -f ./node_modules/eslint-friendly-formatter src",
|
"lint": "eslint --ext .js,.ts,.vue -f ./node_modules/eslint-friendly-formatter src",
|
||||||
"lint:fix": "eslint --ext .js,.ts,.vue -f ./node_modules/eslint-friendly-formatter --fix src",
|
"lint:fix": "eslint --ext .js,.ts,.vue -f ./node_modules/eslint-friendly-formatter --fix src",
|
||||||
"format": "prettier .",
|
"format": "prettier .",
|
||||||
"format:fix": "prettier . --write",
|
"format:fix": "prettier . --write",
|
||||||
"docs:install": "npm i --no-save vitepress vitepress-sidebar",
|
"docs:install": "npm i --no-save vitepress vitepress-sidebar",
|
||||||
"docs:dev": "vitepress dev docs",
|
"docs:dev": "vitepress dev docs",
|
||||||
"docs:build": "npm run format:fix && vitepress build docs",
|
"docs:build": "npm run format:fix && vitepress build docs",
|
||||||
"docs:serve": "npm run docs:build && vitepress serve docs"
|
"docs:serve": "npm run docs:build && vitepress serve docs"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0"
|
"node": ">=16.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@electron/remote": "^2.0.8",
|
"@electron/remote": "^2.0.8",
|
||||||
"pinia": "^2.0.22",
|
"pinia": "^2.0.22",
|
||||||
"vue": "^3.2.39",
|
"vue": "^3.2.39",
|
||||||
"vue-i18n": "^9.2.2",
|
"vue-i18n": "^9.2.2",
|
||||||
"vue-router": "^4.1.5",
|
"vue-router": "^4.1.5",
|
||||||
"vuetify": "^3.0.0-beta.13"
|
"vuetify": "^3.0.0-beta.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
"@typescript-eslint/eslint-plugin": "^5.40.1",
|
||||||
"@typescript-eslint/parser": "^5.40.1",
|
"@typescript-eslint/parser": "^5.40.1",
|
||||||
"@vitejs/plugin-vue": "^3.1.2",
|
"@vitejs/plugin-vue": "^3.1.2",
|
||||||
"@vitejs/plugin-vue-jsx": "^2.0.1",
|
"@vitejs/plugin-vue-jsx": "^2.0.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"electron": "^21.2.0",
|
"electron": "^21.2.0",
|
||||||
"electron-builder": "^23.3.3",
|
"electron-builder": "^23.3.3",
|
||||||
"eslint": "^8.26.0",
|
"eslint": "^8.26.0",
|
||||||
"eslint-config-prettier": "^8.5.0",
|
"eslint-config-prettier": "^8.5.0",
|
||||||
"eslint-config-standard": "^17.0.0",
|
"eslint-config-standard": "^17.0.0",
|
||||||
"eslint-friendly-formatter": "^4.0.1",
|
"eslint-friendly-formatter": "^4.0.1",
|
||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-n": "^15.3.0",
|
"eslint-plugin-n": "^15.3.0",
|
||||||
"eslint-plugin-promise": "^6.1.1",
|
"eslint-plugin-promise": "^6.1.1",
|
||||||
"eslint-plugin-vue": "^9.5.1",
|
"eslint-plugin-vue": "^9.5.1",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"typescript": "^4.8.4",
|
"typescript": "^4.8.4",
|
||||||
"vite": "^3.1.4",
|
"vite": "^3.1.4",
|
||||||
"vite-plugin-electron": "^0.9.3",
|
"vite-plugin-electron": "^0.9.3",
|
||||||
"vite-plugin-eslint": "^1.8.1",
|
"vite-plugin-eslint": "^1.8.1",
|
||||||
"vue-eslint-parser": "^9.1.0",
|
"vue-eslint-parser": "^9.1.0",
|
||||||
"vue-tsc": "^1.0.9"
|
"vue-tsc": "^1.0.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+18
-18
@@ -1,20 +1,20 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
printWidth: 100,
|
printWidth: 100,
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
useTabs: false,
|
useTabs: true,
|
||||||
semi: false,
|
semi: false,
|
||||||
vueIndentScriptAndStyle: false,
|
vueIndentScriptAndStyle: false,
|
||||||
singleQuote: true,
|
singleQuote: true,
|
||||||
quoteProps: 'as-needed',
|
quoteProps: 'as-needed',
|
||||||
trailingComma: 'none',
|
trailingComma: 'none',
|
||||||
bracketSpacing: true,
|
bracketSpacing: true,
|
||||||
bracketSameLine: false,
|
bracketSameLine: false,
|
||||||
jsxBracketSameLine: false,
|
jsxBracketSameLine: false,
|
||||||
jsxSingleQuote: false,
|
jsxSingleQuote: false,
|
||||||
arrowParens: 'always',
|
arrowParens: 'always',
|
||||||
insertPragma: false,
|
insertPragma: false,
|
||||||
requirePragma: false,
|
requirePragma: false,
|
||||||
proseWrap: 'never',
|
proseWrap: 'never',
|
||||||
htmlWhitespaceSensitivity: 'strict',
|
htmlWhitespaceSensitivity: 'strict',
|
||||||
endOfLine: 'lf'
|
endOfLine: 'lf'
|
||||||
}
|
}
|
||||||
+67
-67
@@ -3,91 +3,91 @@ import Constants from './utils/Constants'
|
|||||||
import * as electronRemote from '@electron/remote/main'
|
import * as electronRemote from '@electron/remote/main'
|
||||||
|
|
||||||
const exitApp = (mainWindow: BrowserWindow): void => {
|
const exitApp = (mainWindow: BrowserWindow): void => {
|
||||||
if (mainWindow && !mainWindow.isDestroyed()) {
|
if (mainWindow && !mainWindow.isDestroyed()) {
|
||||||
mainWindow.hide()
|
mainWindow.hide()
|
||||||
}
|
}
|
||||||
mainWindow.destroy()
|
mainWindow.destroy()
|
||||||
app.exit()
|
app.exit()
|
||||||
}
|
}
|
||||||
|
|
||||||
export const createMainWindow = async (mainWindow: BrowserWindow): Promise<BrowserWindow> => {
|
export const createMainWindow = async (mainWindow: BrowserWindow): Promise<BrowserWindow> => {
|
||||||
mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
title: Constants.APP_NAME,
|
title: Constants.APP_NAME,
|
||||||
show: false,
|
show: false,
|
||||||
width: Constants.IS_DEV_ENV ? 1500 : 1200,
|
width: Constants.IS_DEV_ENV ? 1500 : 1200,
|
||||||
height: 650,
|
height: 650,
|
||||||
useContentSize: true,
|
useContentSize: true,
|
||||||
webPreferences: Constants.DEFAULT_WEB_PREFERENCES
|
webPreferences: Constants.DEFAULT_WEB_PREFERENCES
|
||||||
})
|
})
|
||||||
|
|
||||||
mainWindow.setMenu(null)
|
mainWindow.setMenu(null)
|
||||||
|
|
||||||
mainWindow.on('close', (event: Event) => {
|
mainWindow.on('close', (event: Event) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
exitApp(mainWindow)
|
exitApp(mainWindow)
|
||||||
})
|
})
|
||||||
|
|
||||||
mainWindow.webContents.on('did-frame-finish-load', () => {
|
mainWindow.webContents.on('did-frame-finish-load', () => {
|
||||||
if (Constants.IS_DEV_ENV) {
|
if (Constants.IS_DEV_ENV) {
|
||||||
mainWindow.webContents.openDevTools()
|
mainWindow.webContents.openDevTools()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
mainWindow.once('ready-to-show', () => {
|
mainWindow.once('ready-to-show', () => {
|
||||||
mainWindow.setAlwaysOnTop(true)
|
mainWindow.setAlwaysOnTop(true)
|
||||||
mainWindow.show()
|
mainWindow.show()
|
||||||
mainWindow.focus()
|
mainWindow.focus()
|
||||||
mainWindow.setAlwaysOnTop(false)
|
mainWindow.setAlwaysOnTop(false)
|
||||||
|
|
||||||
electronRemote.initialize()
|
electronRemote.initialize()
|
||||||
})
|
})
|
||||||
|
|
||||||
if (Constants.IS_DEV_ENV) {
|
if (Constants.IS_DEV_ENV) {
|
||||||
await mainWindow.loadURL(Constants.APP_INDEX_URL_DEV)
|
await mainWindow.loadURL(Constants.APP_INDEX_URL_DEV)
|
||||||
} else {
|
} else {
|
||||||
await mainWindow.loadFile(Constants.APP_INDEX_URL_PROD)
|
await mainWindow.loadFile(Constants.APP_INDEX_URL_PROD)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mainWindow
|
return mainWindow
|
||||||
}
|
}
|
||||||
|
|
||||||
export const createErrorWindow = async (
|
export const createErrorWindow = async (
|
||||||
errorWindow: BrowserWindow,
|
errorWindow: BrowserWindow,
|
||||||
mainWindow: BrowserWindow,
|
mainWindow: BrowserWindow,
|
||||||
details?: RenderProcessGoneDetails
|
details?: RenderProcessGoneDetails
|
||||||
): Promise<BrowserWindow> => {
|
): Promise<BrowserWindow> => {
|
||||||
if (!Constants.IS_DEV_ENV) {
|
if (!Constants.IS_DEV_ENV) {
|
||||||
mainWindow?.hide()
|
mainWindow?.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
errorWindow = new BrowserWindow({
|
errorWindow = new BrowserWindow({
|
||||||
title: Constants.APP_NAME,
|
title: Constants.APP_NAME,
|
||||||
show: false,
|
show: false,
|
||||||
resizable: Constants.IS_DEV_ENV,
|
resizable: Constants.IS_DEV_ENV,
|
||||||
webPreferences: Constants.DEFAULT_WEB_PREFERENCES
|
webPreferences: Constants.DEFAULT_WEB_PREFERENCES
|
||||||
})
|
})
|
||||||
|
|
||||||
errorWindow.setMenu(null)
|
errorWindow.setMenu(null)
|
||||||
|
|
||||||
if (Constants.IS_DEV_ENV) {
|
if (Constants.IS_DEV_ENV) {
|
||||||
await errorWindow.loadURL(`${Constants.APP_INDEX_URL_DEV}#/error`)
|
await errorWindow.loadURL(`${Constants.APP_INDEX_URL_DEV}#/error`)
|
||||||
} else {
|
} else {
|
||||||
await errorWindow.loadFile(Constants.APP_INDEX_URL_PROD, { hash: 'error' })
|
await errorWindow.loadFile(Constants.APP_INDEX_URL_PROD, { hash: 'error' })
|
||||||
}
|
}
|
||||||
|
|
||||||
errorWindow.on('ready-to-show', () => {
|
errorWindow.on('ready-to-show', () => {
|
||||||
if (!Constants.IS_DEV_ENV && mainWindow && !mainWindow.isDestroyed()) {
|
if (!Constants.IS_DEV_ENV && mainWindow && !mainWindow.isDestroyed()) {
|
||||||
mainWindow.destroy()
|
mainWindow.destroy()
|
||||||
}
|
}
|
||||||
errorWindow.show()
|
errorWindow.show()
|
||||||
errorWindow.focus()
|
errorWindow.focus()
|
||||||
})
|
})
|
||||||
|
|
||||||
errorWindow.webContents.on('did-frame-finish-load', () => {
|
errorWindow.webContents.on('did-frame-finish-load', () => {
|
||||||
if (Constants.IS_DEV_ENV) {
|
if (Constants.IS_DEV_ENV) {
|
||||||
errorWindow.webContents.openDevTools()
|
errorWindow.webContents.openDevTools()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return errorWindow
|
return errorWindow
|
||||||
}
|
}
|
||||||
+15
-15
@@ -7,33 +7,33 @@ let mainWindow
|
|||||||
let errorWindow
|
let errorWindow
|
||||||
|
|
||||||
app.on('ready', () => {
|
app.on('ready', () => {
|
||||||
macOSDisableDefaultMenuItem()
|
macOSDisableDefaultMenuItem()
|
||||||
|
|
||||||
mainWindow = createMainWindow(mainWindow)
|
mainWindow = createMainWindow(mainWindow)
|
||||||
})
|
})
|
||||||
|
|
||||||
app.on('activate', () => {
|
app.on('activate', () => {
|
||||||
if (!mainWindow) {
|
if (!mainWindow) {
|
||||||
mainWindow = createMainWindow(mainWindow)
|
mainWindow = createMainWindow(mainWindow)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
app.on('window-all-closed', () => {
|
app.on('window-all-closed', () => {
|
||||||
mainWindow = null
|
mainWindow = null
|
||||||
errorWindow = null
|
errorWindow = null
|
||||||
|
|
||||||
if (!Constants.IS_MAC) {
|
if (!Constants.IS_MAC) {
|
||||||
app.quit()
|
app.quit()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
app.on(
|
app.on(
|
||||||
'render-process-gone',
|
'render-process-gone',
|
||||||
(event: Event, webContents: WebContents, details: RenderProcessGoneDetails) => {
|
(event: Event, webContents: WebContents, details: RenderProcessGoneDetails) => {
|
||||||
errorWindow = createErrorWindow(errorWindow, mainWindow, details)
|
errorWindow = createErrorWindow(errorWindow, mainWindow, details)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
process.on('uncaughtException', () => {
|
process.on('uncaughtException', () => {
|
||||||
errorWindow = createErrorWindow(errorWindow, mainWindow)
|
errorWindow = createErrorWindow(errorWindow, mainWindow)
|
||||||
})
|
})
|
||||||
+11
-11
@@ -1,19 +1,19 @@
|
|||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
|
|
||||||
export default class Constants {
|
export default class Constants {
|
||||||
static APP_NAME = 'Vutron'
|
static APP_NAME = 'Vutron'
|
||||||
|
|
||||||
static IS_DEV_ENV = process.env.NODE_ENV === 'development'
|
static IS_DEV_ENV = process.env.NODE_ENV === 'development'
|
||||||
|
|
||||||
static IS_MAC = process.platform === 'darwin'
|
static IS_MAC = process.platform === 'darwin'
|
||||||
|
|
||||||
static DEFAULT_WEB_PREFERENCES = {
|
static DEFAULT_WEB_PREFERENCES = {
|
||||||
nodeIntegration: true,
|
nodeIntegration: true,
|
||||||
contextIsolation: false,
|
contextIsolation: false,
|
||||||
nodeIntegrationInWorker: true,
|
nodeIntegrationInWorker: true,
|
||||||
enableRemoteModule: true
|
enableRemoteModule: true
|
||||||
}
|
}
|
||||||
|
|
||||||
static APP_INDEX_URL_DEV = 'http://localhost:5173/index.html'
|
static APP_INDEX_URL_DEV = 'http://localhost:5173/index.html'
|
||||||
static APP_INDEX_URL_PROD = join(__dirname, '../index.html')
|
static APP_INDEX_URL_PROD = join(__dirname, '../index.html')
|
||||||
}
|
}
|
||||||
@@ -2,12 +2,12 @@ import { systemPreferences } from 'electron'
|
|||||||
import Constants from './Constants'
|
import Constants from './Constants'
|
||||||
|
|
||||||
export default class Menus {
|
export default class Menus {
|
||||||
static macOSDisableDefaultMenuItem(): void {
|
static macOSDisableDefaultMenuItem(): void {
|
||||||
if (Constants.IS_MAC) {
|
if (Constants.IS_MAC) {
|
||||||
systemPreferences.setUserDefault('NSDisabledDictationMenuItem', 'boolean', true)
|
systemPreferences.setUserDefault('NSDisabledDictationMenuItem', 'boolean', true)
|
||||||
systemPreferences.setUserDefault('NSDisabledCharacterPaletteMenuItem', 'boolean', true)
|
systemPreferences.setUserDefault('NSDisabledCharacterPaletteMenuItem', 'boolean', true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const { macOSDisableDefaultMenuItem } = Menus
|
export const { macOSDisableDefaultMenuItem } = Menus
|
||||||
@@ -3,22 +3,22 @@ import { DefaultLayout } from '@/renderer/components/layout'
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<DefaultLayout>
|
<DefaultLayout>
|
||||||
<router-view />
|
<router-view />
|
||||||
</DefaultLayout>
|
</DefaultLayout>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
overflow-y: auto !important;
|
overflow-y: auto !important;
|
||||||
}
|
}
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
/* Do not force capitalization of button text */
|
/* Do not force capitalization of button text */
|
||||||
.v-btn {
|
.v-btn {
|
||||||
text-transform: unset !important;
|
text-transform: unset !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -3,12 +3,12 @@ import HeaderLayout from '@/renderer/components/layout/HeaderLayout.vue'
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<v-app>
|
<v-app>
|
||||||
<v-layout>
|
<v-layout>
|
||||||
<HeaderLayout />
|
<HeaderLayout />
|
||||||
<v-main>
|
<v-main>
|
||||||
<slot />
|
<slot />
|
||||||
</v-main>
|
</v-main>
|
||||||
</v-layout>
|
</v-layout>
|
||||||
</v-app>
|
</v-app>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-app-bar color="primary" density="compact">
|
<v-app-bar color="primary" density="compact">
|
||||||
<v-app-bar-title>{{ $route.meta.title }}</v-app-bar-title>
|
<v-app-bar-title>{{ $route.meta.title }}</v-app-bar-title>
|
||||||
</v-app-bar>
|
</v-app-bar>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
</body>
|
</body>
|
||||||
<script type="module" src="./main.ts"></script>
|
<script type="module" src="./main.ts"></script>
|
||||||
</html>
|
</html>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"desc": {
|
"desc": {
|
||||||
"welcome": "Thank you for using Vutron. This cool template makes it easy to create a variety of cross-platform applications."
|
"welcome": "Thank you for using Vutron. This cool template makes it easy to create a variety of cross-platform applications."
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"change-theme": "Change Theme",
|
"change-theme": "Change Theme",
|
||||||
"change-language": "Change Language",
|
"change-language": "Change Language",
|
||||||
"about": "About Vutron"
|
"about": "About Vutron"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"desc": {
|
"desc": {
|
||||||
"welcome": "Vutron을 이용해주셔서 감사드립니다. 이 멋진 템플릿을 활용하면 다양한 크로스플랫폼 애플리케이션을 손쉽게 제작할 수 있습니다."
|
"welcome": "Vutron을 이용해주셔서 감사드립니다. 이 멋진 템플릿을 활용하면 다양한 크로스플랫폼 애플리케이션을 손쉽게 제작할 수 있습니다."
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"change-theme": "테마 변경",
|
"change-theme": "테마 변경",
|
||||||
"change-language": "언어 변경",
|
"change-language": "언어 변경",
|
||||||
"about": "Vutron 정보"
|
"about": "Vutron 정보"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,12 +4,12 @@ import ko from '@/renderer/locales/ko.json'
|
|||||||
import { getCurrentLocale } from '@/renderer/utils'
|
import { getCurrentLocale } from '@/renderer/utils'
|
||||||
|
|
||||||
export default createI18n({
|
export default createI18n({
|
||||||
legacy: false,
|
legacy: false,
|
||||||
locale: getCurrentLocale(),
|
locale: getCurrentLocale(),
|
||||||
fallbackLocale: 'en',
|
fallbackLocale: 'en',
|
||||||
globalInjection: true,
|
globalInjection: true,
|
||||||
messages: {
|
messages: {
|
||||||
en,
|
en,
|
||||||
ko
|
ko
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -5,32 +5,32 @@ import { aliases, mdi } from 'vuetify/iconsets/mdi'
|
|||||||
import colors from 'vuetify/lib/util/colors.mjs'
|
import colors from 'vuetify/lib/util/colors.mjs'
|
||||||
|
|
||||||
export default createVuetify({
|
export default createVuetify({
|
||||||
locale: {
|
locale: {
|
||||||
messages: { ko, en },
|
messages: { ko, en },
|
||||||
defaultLocale: 'en',
|
defaultLocale: 'en',
|
||||||
fallbackLocale: 'en'
|
fallbackLocale: 'en'
|
||||||
},
|
},
|
||||||
icons: {
|
icons: {
|
||||||
defaultSet: 'mdi',
|
defaultSet: 'mdi',
|
||||||
aliases,
|
aliases,
|
||||||
sets: {
|
sets: {
|
||||||
mdi
|
mdi
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
themes: {
|
themes: {
|
||||||
light: {
|
light: {
|
||||||
dark: false,
|
dark: false,
|
||||||
colors: {
|
colors: {
|
||||||
primary: colors.green.darken2
|
primary: colors.green.darken2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dark: {
|
dark: {
|
||||||
dark: true,
|
dark: true,
|
||||||
colors: {
|
colors: {
|
||||||
primary: colors.green.darken4
|
primary: colors.green.darken4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -2,25 +2,25 @@ import { createRouter, createWebHashHistory } from 'vue-router/dist/vue-router.e
|
|||||||
import { MainScreen, ErrorScreen } from '@/renderer/screens'
|
import { MainScreen, ErrorScreen } from '@/renderer/screens'
|
||||||
|
|
||||||
export default createRouter({
|
export default createRouter({
|
||||||
history: createWebHashHistory(),
|
history: createWebHashHistory(),
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
component: MainScreen,
|
component: MainScreen,
|
||||||
meta: {
|
meta: {
|
||||||
title: 'Main'
|
title: 'Main'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/error',
|
path: '/error',
|
||||||
component: ErrorScreen,
|
component: ErrorScreen,
|
||||||
meta: {
|
meta: {
|
||||||
title: 'Unknown error occurred'
|
title: 'Unknown error occurred'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/:pathMatch(.*)*',
|
path: '/:pathMatch(.*)*',
|
||||||
redirect: '/'
|
redirect: '/'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<script setup lang="tsx"></script>
|
<script setup lang="tsx"></script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>Unknown error occurred</div>
|
<div>Unknown error occurred</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -11,54 +11,54 @@ const { counterIncrease } = useTempStore()
|
|||||||
const { counter } = storeToRefs(useTempStore())
|
const { counter } = storeToRefs(useTempStore())
|
||||||
|
|
||||||
const handleChangeTheme = (): void => {
|
const handleChangeTheme = (): void => {
|
||||||
theme.global.name.value = theme.global.current.value.dark ? 'light' : 'dark'
|
theme.global.name.value = theme.global.current.value.dark ? 'light' : 'dark'
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleChangeLanguage = (): void => {
|
const handleChangeLanguage = (): void => {
|
||||||
if (locale.value === 'en') {
|
if (locale.value === 'en') {
|
||||||
locale.value = 'ko'
|
locale.value = 'ko'
|
||||||
} else {
|
} else {
|
||||||
locale.value = 'en'
|
locale.value = 'en'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleAbout = async (): Promise<void> => {
|
const handleAbout = async (): Promise<void> => {
|
||||||
await openExternal('https://github.com/jooy2/vutron')
|
await openExternal('https://github.com/jooy2/vutron')
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleCountIncrease = (): void => {
|
const handleCountIncrease = (): void => {
|
||||||
counterIncrease(1)
|
counterIncrease(1)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<v-container>
|
<v-container>
|
||||||
<v-row align="center" class="text-center">
|
<v-row align="center" class="text-center">
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<img alt="logo" class="ma-auto h-auto w-75" src="/images/vutron-logo.webp" />
|
<img alt="logo" class="ma-auto h-auto w-75" src="/images/vutron-logo.webp" />
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
{{ $t('desc.welcome') }}
|
{{ $t('desc.welcome') }}
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="12"> Counter: {{ counter }} </v-col>
|
<v-col cols="12"> Counter: {{ counter }} </v-col>
|
||||||
<v-col cols="3">
|
<v-col cols="3">
|
||||||
<v-btn block color="primary" @click="handleChangeTheme">
|
<v-btn block color="primary" @click="handleChangeTheme">
|
||||||
{{ $t('menu.change-theme') }}
|
{{ $t('menu.change-theme') }}
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="3">
|
<v-col cols="3">
|
||||||
<v-btn block color="primary" @click="handleChangeLanguage">
|
<v-btn block color="primary" @click="handleChangeLanguage">
|
||||||
{{ $t('menu.change-language') }}
|
{{ $t('menu.change-language') }}
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="3">
|
<v-col cols="3">
|
||||||
<v-btn block color="primary" @click="handleAbout">
|
<v-btn block color="primary" @click="handleAbout">
|
||||||
{{ $t('menu.about') }}
|
{{ $t('menu.about') }}
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col cols="3">
|
<v-col cols="3">
|
||||||
<v-btn block color="primary" @click="handleCountIncrease">Count + 1</v-btn>
|
<v-btn block color="primary" @click="handleCountIncrease">Count + 1</v-btn>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-container>
|
</v-container>
|
||||||
</template>
|
</template>
|
||||||
+11
-11
@@ -1,15 +1,15 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
|
|
||||||
export const useTempStore = defineStore('temp', {
|
export const useTempStore = defineStore('temp', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
counter: 0
|
counter: 0
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
getCounter: (state): number => state.counter
|
getCounter: (state): number => state.counter
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
counterIncrease(amount: number) {
|
counterIncrease(amount: number) {
|
||||||
this.counter += amount
|
this.counter += amount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
import { shell } from 'electron'
|
import { shell } from 'electron'
|
||||||
|
|
||||||
export default class Utils {
|
export default class Utils {
|
||||||
static getCurrentLocale(): string {
|
static getCurrentLocale(): string {
|
||||||
return navigator?.language?.split('-')[0] || 'en'
|
return navigator?.language?.split('-')[0] || 'en'
|
||||||
}
|
}
|
||||||
|
|
||||||
static async openExternal(url: string): Promise<void> {
|
static async openExternal(url: string): Promise<void> {
|
||||||
await shell.openExternal(url)
|
await shell.openExternal(url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const { getCurrentLocale, openExternal } = Utils
|
export const { getCurrentLocale, openExternal } = Utils
|
||||||
+26
-26
@@ -1,28 +1,28 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": "./",
|
"baseUrl": "./",
|
||||||
"outDir": "./dist",
|
"outDir": "./dist",
|
||||||
"target": "esnext",
|
"target": "esnext",
|
||||||
"module": "esnext",
|
"module": "esnext",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"noImplicitAny": false,
|
"noImplicitAny": false,
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./src/*"]
|
"@/*": ["./src/*"]
|
||||||
},
|
},
|
||||||
"lib": ["esnext", "dom"]
|
"lib": ["esnext", "dom"]
|
||||||
},
|
},
|
||||||
"include": ["src/**/*/*.ts", "src/**/*/*.d.ts", "src/**/*/*.tsx", "src/**/*/*.vue"],
|
"include": ["src/**/*/*.ts", "src/**/*/*.d.ts", "src/**/*/*.tsx", "src/**/*/*.vue"],
|
||||||
"references": [
|
"references": [
|
||||||
{
|
{
|
||||||
"path": "./tsconfig.node.json"
|
"path": "./tsconfig.node.json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+10
-10
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "esnext",
|
"target": "esnext",
|
||||||
"module": "esnext",
|
"module": "esnext",
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"composite": true,
|
"composite": true,
|
||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"allowSyntheticDefaultImports": true
|
"allowSyntheticDefaultImports": true
|
||||||
},
|
},
|
||||||
"include": ["package.json", "electron"]
|
"include": ["package.json"]
|
||||||
}
|
}
|
||||||
+39
-39
@@ -8,43 +8,43 @@ import { resolve, dirname } from 'path'
|
|||||||
import { builtinModules } from 'module'
|
import { builtinModules } from 'module'
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
define: {
|
define: {
|
||||||
__VUE_I18N_FULL_INSTALL__: true,
|
__VUE_I18N_FULL_INSTALL__: true,
|
||||||
__VUE_I18N_LEGACY_API__: false,
|
__VUE_I18N_LEGACY_API__: false,
|
||||||
__INTLIFY_PROD_DEVTOOLS__: false
|
__INTLIFY_PROD_DEVTOOLS__: false
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['.mjs', '.js', '.ts', '.vue', '.json', '.scss'],
|
extensions: ['.mjs', '.js', '.ts', '.vue', '.json', '.scss'],
|
||||||
alias: {
|
alias: {
|
||||||
'@': resolve(dirname(fileURLToPath(import.meta.url)), 'src')
|
'@': resolve(dirname(fileURLToPath(import.meta.url)), 'src')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
base: './',
|
base: './',
|
||||||
root: resolve('./src/renderer'),
|
root: resolve('./src/renderer'),
|
||||||
publicDir: resolve('./src/renderer/public'),
|
publicDir: resolve('./src/renderer/public'),
|
||||||
build: {
|
build: {
|
||||||
outDir: resolve('./dist')
|
outDir: resolve('./dist')
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
vue(),
|
vue(),
|
||||||
vueJsx(),
|
vueJsx(),
|
||||||
eslintPlugin(),
|
eslintPlugin(),
|
||||||
electronPlugin({
|
electronPlugin({
|
||||||
main: {
|
main: {
|
||||||
entry: 'src/main/index.ts',
|
entry: 'src/main/index.ts',
|
||||||
vite: {
|
vite: {
|
||||||
publicDir: resolve('./src/main'),
|
publicDir: resolve('./src/main'),
|
||||||
build: {
|
build: {
|
||||||
emptyOutDir: true,
|
emptyOutDir: true,
|
||||||
assetsDir: '.',
|
assetsDir: '.',
|
||||||
outDir: 'dist/main',
|
outDir: 'dist/main',
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
external: ['electron', ...builtinModules]
|
external: ['electron', ...builtinModules]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
renderer: {}
|
renderer: {}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
Reference in new issue
Block a user