diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe9a716..b557682 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,9 +4,8 @@ on: push: branches: - main - # pull_request: - # release: - # types: [created] + tags: + - 'v*' jobs: build: diff --git a/electron.vite.config.mjs b/electron.vite.config.mjs index 4e80141..f047e15 100644 --- a/electron.vite.config.mjs +++ b/electron.vite.config.mjs @@ -1,48 +1,16 @@ import { resolve } from 'path' import { defineConfig } from 'electron-vite' -import vue from '@vitejs/plugin-vue' -import { toSass } from './src/renderer/src/libs/sass-utils' -import theme from './src/renderer/src/libs/theme' +import { sharedConfig } from './vite.shared' export default defineConfig({ main: {}, preload: {}, renderer: { - plugins: [vue()], + ...sharedConfig, resolve: { alias: { '@': resolve('src/renderer/src'), }, }, - css: { - preprocessorOptions: { - scss: { - api: 'modern-compiler', - additionalData: - '@use "/src/styles/_functions.scss" as *; @use "/src/styles/_font-style.scss" as *;', - functions: { - 'get($keys)': function (keys) { - keys = keys - .toString() - .replace(/['"]+/g, '') - .split('.') - - let result = theme - for (let i = 0; i < keys.length; i++) { - result = result[keys[i]] - } - - return toSass(result) - }, - 'getColors()': function () { - return toSass(theme.colors) - }, - 'getThemes()': function () { - return toSass(theme.themes) - }, - }, - }, - }, - }, }, }) diff --git a/package.json b/package.json index abebbca..31e09d3 100644 --- a/package.json +++ b/package.json @@ -1,52 +1,54 @@ { - "name": "app.takerofnotes.com", - "version": "1.0.0", - "description": "An Electron application with Vue", - "main": "./out/main/index.js", - "author": "example.com", - "homepage": "https://electron-vite.org", - "prettier": { - "tabWidth": 4, - "semi": false, - "singleQuote": true - }, - "scripts": { - "format": "prettier --write .", - "start": "electron-vite preview", - "dev": "electron-vite dev", - "build": "electron-vite build", - "postinstall": "electron-builder install-app-deps", - "build:unpack": "npm run build && electron-builder --dir", - "build:win": "npm run build && electron-builder --win", - "build:mac": "npm run build && electron-builder --mac", - "build:linux": "npm run build && electron-builder --linux" - }, - "dependencies": { - "@electron-toolkit/preload": "^3.0.2", - "@electron-toolkit/utils": "^4.0.0", - "@fuzzco/font-loader": "^1.0.2", - "@tiptap/extension-document": "^3.19.0", - "@tiptap/extension-image": "^3.19.0", - "@tiptap/extension-table": "^3.19.0", - "@tiptap/markdown": "^3.19.0", - "@tiptap/starter-kit": "^3.19.0", - "@tiptap/vue-3": "^3.19.0", - "@vueuse/core": "^14.2.1", - "electron-updater": "^6.3.9", - "gsap": "^3.14.2", - "lenis": "^1.3.17", - "sass": "^1.97.3", - "sass-embedded": "^1.97.3", - "tempus": "^1.0.0-dev.17" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^6.0.2", - "electron": "^39.2.6", - "electron-builder": "^26.0.12", - "electron-vite": "^5.0.0", - "prettier": "^3.7.4", - "unplugin-vue-components": "^31.0.0", - "vite": "^7.2.6", - "vue": "^3.5.25" - } + "name": "app.takerofnotes.com", + "version": "1.0.0", + "description": "An Electron application with Vue", + "main": "./out/main/index.js", + "author": "example.com", + "homepage": "https://electron-vite.org", + "prettier": { + "tabWidth": 4, + "semi": false, + "singleQuote": true + }, + "scripts": { + "format": "prettier --write .", + "start": "electron-vite preview", + "dev": "electron-vite dev", + "dev:web": "vite", + "build": "electron-vite build", + "build:web": "vite build", + "postinstall": "electron-builder install-app-deps", + "build:unpack": "npm run build && electron-builder --dir", + "build:win": "npm run build && electron-builder --win", + "build:mac": "npm run build && electron-builder --mac", + "build:linux": "npm run build && electron-builder --linux" + }, + "dependencies": { + "@electron-toolkit/preload": "^3.0.2", + "@electron-toolkit/utils": "^4.0.0", + "@fuzzco/font-loader": "^1.0.2", + "@tiptap/extension-document": "^3.19.0", + "@tiptap/extension-image": "^3.19.0", + "@tiptap/extension-table": "^3.19.0", + "@tiptap/markdown": "^3.19.0", + "@tiptap/starter-kit": "^3.19.0", + "@tiptap/vue-3": "^3.19.0", + "@vueuse/core": "^14.2.1", + "electron-updater": "^6.3.9", + "gsap": "^3.14.2", + "lenis": "^1.3.17", + "sass": "^1.97.3", + "sass-embedded": "^1.97.3", + "tempus": "^1.0.0-dev.17" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^6.0.2", + "electron": "^39.2.6", + "electron-builder": "^26.0.12", + "electron-vite": "^5.0.0", + "prettier": "^3.7.4", + "unplugin-vue-components": "^31.0.0", + "vite": "^7.2.6", + "vue": "^3.5.25" + } } diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..e060ca9 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,20 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import { sharedConfig } from './vite.shared' + +export default defineConfig({ + ...sharedConfig, + root: 'src/renderer', + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, + server: { + port: 3000, + }, + build: { + outDir: '../../dist/renderer', + }, +}) diff --git a/vite.shared.js b/vite.shared.js new file mode 100644 index 0000000..f155f85 --- /dev/null +++ b/vite.shared.js @@ -0,0 +1,34 @@ +import vue from '@vitejs/plugin-vue' +import { toSass } from './src/renderer/src/libs/sass-utils' +import theme from './src/renderer/src/libs/theme' + +export const sharedConfig = { + plugins: [vue()], + css: { + preprocessorOptions: { + scss: { + api: 'modern-compiler', + additionalData: + '@use "/src/styles/_functions.scss" as *; @use "/src/styles/_font-style.scss" as *;', + functions: { + 'get($keys)': function (keys) { + keys = keys.toString().replace(/['"]+/g, '').split('.') + + let result = theme + for (let i = 0; i < keys.length; i++) { + result = result[keys[i]] + } + + return toSass(result) + }, + 'getColors()': function () { + return toSass(theme.colors) + }, + 'getThemes()': function () { + return toSass(theme.themes) + }, + }, + }, + }, + }, +}