Spaces instead Tabs
This commit is contained in:
		
							parent
							
								
									e1e2ee47bf
								
							
						
					
					
						commit
						b27927a0cd
					
				| 
						 | 
				
			
			@ -3,36 +3,36 @@
 | 
			
		|||
 * @see https://www.electron.build/configuration/configuration
 | 
			
		||||
 */
 | 
			
		||||
module.exports = {
 | 
			
		||||
	appId: "YourAppID@qq.com",
 | 
			
		||||
	productName: "YourAppName",
 | 
			
		||||
	copyright: "Copyright © 2022 ${author}",
 | 
			
		||||
	asar: true,
 | 
			
		||||
	directories: {
 | 
			
		||||
		output: "release/${version}",
 | 
			
		||||
		buildResources: "build",
 | 
			
		||||
	},
 | 
			
		||||
	files: ["dist"],
 | 
			
		||||
	win: {
 | 
			
		||||
		target: [
 | 
			
		||||
			{
 | 
			
		||||
				target: "nsis",
 | 
			
		||||
				arch: ["x64"],
 | 
			
		||||
			},
 | 
			
		||||
		],
 | 
			
		||||
		artifactName: "${productName}-${version}-Setup.${ext}",
 | 
			
		||||
	},
 | 
			
		||||
	nsis: {
 | 
			
		||||
		oneClick: false,
 | 
			
		||||
		perMachine: false,
 | 
			
		||||
		allowToChangeInstallationDirectory: true,
 | 
			
		||||
		deleteAppDataOnUninstall: false,
 | 
			
		||||
	},
 | 
			
		||||
	mac: {
 | 
			
		||||
		target: ["dmg"],
 | 
			
		||||
		artifactName: "${productName}-${version}-Installer.${ext}",
 | 
			
		||||
	},
 | 
			
		||||
	linux: {
 | 
			
		||||
		target: ["AppImage"],
 | 
			
		||||
		artifactName: "${productName}-${version}-Installer.${ext}",
 | 
			
		||||
	},
 | 
			
		||||
  appId: "YourAppID@qq.com",
 | 
			
		||||
  productName: "YourAppName",
 | 
			
		||||
  copyright: "Copyright © 2022 ${author}",
 | 
			
		||||
  asar: true,
 | 
			
		||||
  directories: {
 | 
			
		||||
    output: "release/${version}",
 | 
			
		||||
    buildResources: "build",
 | 
			
		||||
  },
 | 
			
		||||
  files: ["dist"],
 | 
			
		||||
  win: {
 | 
			
		||||
    target: [
 | 
			
		||||
      {
 | 
			
		||||
        target: "nsis",
 | 
			
		||||
        arch: ["x64"],
 | 
			
		||||
      },
 | 
			
		||||
    ],
 | 
			
		||||
    artifactName: "${productName}-${version}-Setup.${ext}",
 | 
			
		||||
  },
 | 
			
		||||
  nsis: {
 | 
			
		||||
    oneClick: false,
 | 
			
		||||
    perMachine: false,
 | 
			
		||||
    allowToChangeInstallationDirectory: true,
 | 
			
		||||
    deleteAppDataOnUninstall: false,
 | 
			
		||||
  },
 | 
			
		||||
  mac: {
 | 
			
		||||
    target: ["dmg"],
 | 
			
		||||
    artifactName: "${productName}-${version}-Installer.${ext}",
 | 
			
		||||
  },
 | 
			
		||||
  linux: {
 | 
			
		||||
    target: ["AppImage"],
 | 
			
		||||
    artifactName: "${productName}-${version}-Installer.${ext}",
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										28
									
								
								README.md
								
								
								
								
							
							
						
						
									
										28
									
								
								README.md
								
								
								
								
							| 
						 | 
				
			
			@ -91,8 +91,8 @@ Once `dev` or `build` npm-script is executed, the `dist` folder will be generate
 | 
			
		|||
    ```typescript
 | 
			
		||||
    // Defined in the window
 | 
			
		||||
    interface Window {
 | 
			
		||||
    	fs: typeof import("fs")
 | 
			
		||||
    	ipcRenderer: import("electron").IpcRenderer
 | 
			
		||||
      fs: typeof import("fs")
 | 
			
		||||
      ipcRenderer: import("electron").IpcRenderer
 | 
			
		||||
    }
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -115,18 +115,18 @@ Once `dev` or `build` npm-script is executed, the `dist` folder will be generate
 | 
			
		|||
 | 
			
		||||
```js
 | 
			
		||||
export default {
 | 
			
		||||
	build: {
 | 
			
		||||
		// built lib for Main-process, Preload-script
 | 
			
		||||
		lib: {
 | 
			
		||||
			entry: "index.ts",
 | 
			
		||||
			formats: ["cjs"],
 | 
			
		||||
			fileName: () => "[name].js",
 | 
			
		||||
		},
 | 
			
		||||
		rollupOptions: {
 | 
			
		||||
			// configuration here
 | 
			
		||||
			external: ["serialport", "sqlite3"],
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
  build: {
 | 
			
		||||
    // built lib for Main-process, Preload-script
 | 
			
		||||
    lib: {
 | 
			
		||||
      entry: "index.ts",
 | 
			
		||||
      formats: ["cjs"],
 | 
			
		||||
      fileName: () => "[name].js",
 | 
			
		||||
    },
 | 
			
		||||
    rollupOptions: {
 | 
			
		||||
      // configuration here
 | 
			
		||||
      external: ["serialport", "sqlite3"],
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,9 +38,9 @@ async function createWindow() {
 | 
			
		|||
 | 
			
		||||
  // Make all links open with the browser, not with the application
 | 
			
		||||
  win.webContents.setWindowOpenHandler(({ url }) => {
 | 
			
		||||
		if (url.startsWith('https:')) shell.openExternal(url)
 | 
			
		||||
		return { action: 'deny' }
 | 
			
		||||
	})
 | 
			
		||||
    if (url.startsWith('https:')) shell.openExternal(url)
 | 
			
		||||
    return { action: 'deny' }
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
app.whenReady().then(createWindow)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,9 +5,9 @@
 | 
			
		|||
    <link rel="icon" type="image/svg+xml" href="/src/assets/favicon.svg" />
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | 
			
		||||
    <meta
 | 
			
		||||
			http-equiv="Content-Security-Policy"
 | 
			
		||||
			content="script-src 'self' 'unsafe-inline';"
 | 
			
		||||
		/>
 | 
			
		||||
      http-equiv="Content-Security-Policy"
 | 
			
		||||
      content="script-src 'self' 'unsafe-inline';"
 | 
			
		||||
    />
 | 
			
		||||
    <title>Vite App</title>
 | 
			
		||||
  </head>
 | 
			
		||||
  <body>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,68 +5,68 @@ import styles from '@/styles/app.module.scss'
 | 
			
		|||
import { useState } from 'react'
 | 
			
		||||
 | 
			
		||||
const App = () => {
 | 
			
		||||
	const [count, setCount] = useState(0)
 | 
			
		||||
  const [count, setCount] = useState(0)
 | 
			
		||||
 | 
			
		||||
	return (
 | 
			
		||||
		<div className={styles.app}>
 | 
			
		||||
			<header className={styles.appHeader}>
 | 
			
		||||
				<div className={styles.logos}>
 | 
			
		||||
					<div className={styles.imgBox}>
 | 
			
		||||
						<img
 | 
			
		||||
							src={electron}
 | 
			
		||||
							style={{ height: '24vw' }}
 | 
			
		||||
							className={styles.appLogo}
 | 
			
		||||
							alt="electron"
 | 
			
		||||
						/>
 | 
			
		||||
					</div>
 | 
			
		||||
					<div className={styles.imgBox}>
 | 
			
		||||
						<img src={vite} style={{ height: '19vw' }} alt="vite" />
 | 
			
		||||
					</div>
 | 
			
		||||
					<div className={styles.imgBox}>
 | 
			
		||||
						<img
 | 
			
		||||
							src={react}
 | 
			
		||||
							style={{ maxWidth: '100%' }}
 | 
			
		||||
							className={styles.appLogo}
 | 
			
		||||
							alt="logo"
 | 
			
		||||
						/>
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
				<p>Hello Electron + Vite + React!</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<button onClick={() => setCount((count) => count + 1)}>
 | 
			
		||||
						count is: {count}
 | 
			
		||||
					</button>
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Edit <code>App.tsx</code> and save to test HMR updates.
 | 
			
		||||
				</p>
 | 
			
		||||
				<div>
 | 
			
		||||
					<a
 | 
			
		||||
						className={styles.appLink}
 | 
			
		||||
						href="https://reactjs.org"
 | 
			
		||||
						target="_blank"
 | 
			
		||||
						rel="noopener noreferrer"
 | 
			
		||||
					>
 | 
			
		||||
						Learn React
 | 
			
		||||
					</a>
 | 
			
		||||
					{' | '}
 | 
			
		||||
					<a
 | 
			
		||||
						className={styles.appLink}
 | 
			
		||||
						href="https://vitejs.dev/guide/features.html"
 | 
			
		||||
						target="_blank"
 | 
			
		||||
						rel="noopener noreferrer"
 | 
			
		||||
					>
 | 
			
		||||
						Vite Docs
 | 
			
		||||
					</a>
 | 
			
		||||
					<div className={styles.staticPublic}>
 | 
			
		||||
						Place static files into the{' '}
 | 
			
		||||
						<code>src/renderer/public</code> folder
 | 
			
		||||
						<img style={{ width: 90 }} src="./images/node.png" />
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
			</header>
 | 
			
		||||
		</div>
 | 
			
		||||
	)
 | 
			
		||||
  return (
 | 
			
		||||
    <div className={styles.app}>
 | 
			
		||||
      <header className={styles.appHeader}>
 | 
			
		||||
        <div className={styles.logos}>
 | 
			
		||||
          <div className={styles.imgBox}>
 | 
			
		||||
            <img
 | 
			
		||||
              src={electron}
 | 
			
		||||
              style={{ height: '24vw' }}
 | 
			
		||||
              className={styles.appLogo}
 | 
			
		||||
              alt="electron"
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
          <div className={styles.imgBox}>
 | 
			
		||||
            <img src={vite} style={{ height: '19vw' }} alt="vite" />
 | 
			
		||||
          </div>
 | 
			
		||||
          <div className={styles.imgBox}>
 | 
			
		||||
            <img
 | 
			
		||||
              src={react}
 | 
			
		||||
              style={{ maxWidth: '100%' }}
 | 
			
		||||
              className={styles.appLogo}
 | 
			
		||||
              alt="logo"
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <p>Hello Electron + Vite + React!</p>
 | 
			
		||||
        <p>
 | 
			
		||||
          <button onClick={() => setCount((count) => count + 1)}>
 | 
			
		||||
            count is: {count}
 | 
			
		||||
          </button>
 | 
			
		||||
        </p>
 | 
			
		||||
        <p>
 | 
			
		||||
          Edit <code>App.tsx</code> and save to test HMR updates.
 | 
			
		||||
        </p>
 | 
			
		||||
        <div>
 | 
			
		||||
          <a
 | 
			
		||||
            className={styles.appLink}
 | 
			
		||||
            href="https://reactjs.org"
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noopener noreferrer"
 | 
			
		||||
          >
 | 
			
		||||
            Learn React
 | 
			
		||||
          </a>
 | 
			
		||||
          {' | '}
 | 
			
		||||
          <a
 | 
			
		||||
            className={styles.appLink}
 | 
			
		||||
            href="https://vitejs.dev/guide/features.html"
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noopener noreferrer"
 | 
			
		||||
          >
 | 
			
		||||
            Vite Docs
 | 
			
		||||
          </a>
 | 
			
		||||
          <div className={styles.staticPublic}>
 | 
			
		||||
            Place static files into the{' '}
 | 
			
		||||
            <code>src/renderer/public</code> folder
 | 
			
		||||
            <img style={{ width: 90 }} src="./images/node.png" />
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </header>
 | 
			
		||||
    </div>
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default App
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,11 +5,11 @@ import './samples/electron-store'
 | 
			
		|||
import './styles/index.css'
 | 
			
		||||
 | 
			
		||||
render(
 | 
			
		||||
	<StrictMode>
 | 
			
		||||
		<App />
 | 
			
		||||
	</StrictMode>,
 | 
			
		||||
	document.getElementById('root'),
 | 
			
		||||
	window.removeLoading
 | 
			
		||||
  <StrictMode>
 | 
			
		||||
    <App />
 | 
			
		||||
  </StrictMode>,
 | 
			
		||||
  document.getElementById('root'),
 | 
			
		||||
  window.removeLoading
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
console.log('fs', window.fs)
 | 
			
		||||
| 
						 | 
				
			
			@ -17,5 +17,5 @@ console.log('ipcRenderer', window.ipcRenderer)
 | 
			
		|||
 | 
			
		||||
// Use ipcRenderer.on
 | 
			
		||||
window.ipcRenderer.on('main-process-message', (_event, ...args) => {
 | 
			
		||||
	console.log('[Receive Main-process message]:', ...args)
 | 
			
		||||
  console.log('[Receive Main-process message]:', ...args)
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,65 +1,65 @@
 | 
			
		|||
.app {
 | 
			
		||||
	text-align: center;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
 | 
			
		||||
	.appHeader {
 | 
			
		||||
		background-color: #282c34;
 | 
			
		||||
		min-height: 100vh;
 | 
			
		||||
		display: flex;
 | 
			
		||||
		flex-direction: column;
 | 
			
		||||
		align-items: center;
 | 
			
		||||
		justify-content: center;
 | 
			
		||||
		font-size: calc(10px + 2vmin);
 | 
			
		||||
		color: white;
 | 
			
		||||
  .appHeader {
 | 
			
		||||
    background-color: #282c34;
 | 
			
		||||
    min-height: 100vh;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    flex-direction: column;
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    justify-content: center;
 | 
			
		||||
    font-size: calc(10px + 2vmin);
 | 
			
		||||
    color: white;
 | 
			
		||||
 | 
			
		||||
		.logos {
 | 
			
		||||
			display: flex;
 | 
			
		||||
			box-sizing: border-box;
 | 
			
		||||
			align-items: center;
 | 
			
		||||
			padding: 0 5vw;
 | 
			
		||||
			width: 100%;
 | 
			
		||||
    .logos {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      padding: 0 5vw;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
 | 
			
		||||
			.imgBox {
 | 
			
		||||
				width: 33.33%;
 | 
			
		||||
      .imgBox {
 | 
			
		||||
        width: 33.33%;
 | 
			
		||||
 | 
			
		||||
				.appLogo {
 | 
			
		||||
					pointer-events: none;
 | 
			
		||||
				}
 | 
			
		||||
        .appLogo {
 | 
			
		||||
          pointer-events: none;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
				@media (prefers-reduced-motion: no-preference) {
 | 
			
		||||
					.appLogo {
 | 
			
		||||
						animation: App-logo-spin infinite 20s linear;
 | 
			
		||||
					}
 | 
			
		||||
					@keyframes App-logo-spin {
 | 
			
		||||
						from {
 | 
			
		||||
							transform: rotate(0deg);
 | 
			
		||||
						}
 | 
			
		||||
						to {
 | 
			
		||||
							transform: rotate(360deg);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
        @media (prefers-reduced-motion: no-preference) {
 | 
			
		||||
          .appLogo {
 | 
			
		||||
            animation: App-logo-spin infinite 20s linear;
 | 
			
		||||
          }
 | 
			
		||||
          @keyframes App-logo-spin {
 | 
			
		||||
            from {
 | 
			
		||||
              transform: rotate(0deg);
 | 
			
		||||
            }
 | 
			
		||||
            to {
 | 
			
		||||
              transform: rotate(360deg);
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		button {
 | 
			
		||||
			font-size: calc(10px + 2vmin);
 | 
			
		||||
		}
 | 
			
		||||
    button {
 | 
			
		||||
      font-size: calc(10px + 2vmin);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		.appLink {
 | 
			
		||||
			color: #61dafb;
 | 
			
		||||
		}
 | 
			
		||||
    .appLink {
 | 
			
		||||
      color: #61dafb;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		.staticPublic {
 | 
			
		||||
			display: flex;
 | 
			
		||||
			align-items: center;
 | 
			
		||||
    .staticPublic {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
 | 
			
		||||
			code {
 | 
			
		||||
				padding: 4px 7px;
 | 
			
		||||
				margin: 0 4px;
 | 
			
		||||
				border-radius: 4px;
 | 
			
		||||
				background-color: rgb(30, 30, 30, .7);
 | 
			
		||||
				font-size: 13px;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
      code {
 | 
			
		||||
        padding: 4px 7px;
 | 
			
		||||
        margin: 0 4px;
 | 
			
		||||
        border-radius: 4px;
 | 
			
		||||
        background-color: rgb(30, 30, 30, .7);
 | 
			
		||||
        font-size: 13px;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue