chore: add monorepo tools (#9196)

This commit is contained in:
liuyi
2024-12-24 15:29:48 +08:00
committed by GitHub
parent e3a8b63e38
commit 2443935830
116 changed files with 9390 additions and 1466 deletions

View File

@@ -7,7 +7,7 @@ To run AFFiNE Desktop Client Application locally, run the following commands:
```sh
# in repo root
yarn install
yarn workspace @affine/native build
yarn affine @affine/native build
yarn dev
# in packages/frontend/apps/electron

View File

@@ -2,6 +2,7 @@
"name": "@affine/electron",
"private": true,
"version": "0.18.0",
"main": "./dist/main.js",
"author": "toeverything",
"repository": {
"url": "https://github.com/toeverything/AFFiNE",
@@ -11,19 +12,20 @@
"homepage": "https://github.com/toeverything/AFFiNE",
"scripts": {
"start": "electron .",
"dev": "DEV_SERVER_URL=http://localhost:8080 node --loader ts-node/esm/transpile-only ./scripts/dev.ts",
"dev:prod": "yarn node --loader ts-node/esm/transpile-only scripts/dev.ts",
"build": "NODE_ENV=production node --loader ts-node/esm/transpile-only scripts/build-layers.ts",
"build:dev": "NODE_ENV=development node --loader ts-node/esm/transpile-only scripts/build-layers.ts",
"generate-assets": "node --loader ts-node/esm/transpile-only scripts/generate-assets.ts",
"package": "cross-env NODE_OPTIONS=\"--loader ts-node/esm/transpile-only\" electron-forge package",
"make": "cross-env NODE_OPTIONS=\"--loader ts-node/esm/transpile-only\" electron-forge make",
"make-squirrel": "node --loader ts-node/esm/transpile-only scripts/make-squirrel.ts",
"make-nsis": "node --loader ts-node/esm/transpile-only scripts/make-nsis.ts"
"dev": "cross-env DEV_SERVER_URL=http://localhost:8080 node ./scripts/dev.ts",
"dev:prod": "node ./scripts/dev.ts",
"build": "cross-env NODE_ENV=production node ./scripts/build-layers.ts",
"build:dev": "node ./scripts/build-layers.ts",
"bundle": "affine bundle",
"generate-assets": "node ./scripts/generate-assets.ts",
"package": "electron-forge package",
"make": "electron-forge make",
"make-squirrel": "node ./scripts/make-squirrel.ts",
"make-nsis": "node ./scripts/make-nsis.ts"
},
"main": "./dist/main.js",
"devDependencies": {
"@affine-test/kit": "workspace:*",
"@affine-tools/utils": "workspace:*",
"@affine/component": "workspace:*",
"@affine/core": "workspace:*",
"@affine/electron-api": "workspace:*",

View File

@@ -1,8 +1,8 @@
import { resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
import { getBuildConfig } from '@affine/cli/src/webpack/runtime-config';
import { getBuildConfig } from '@affine-tools/utils/build-config';
import { Package } from '@affine-tools/utils/workspace';
import { sentryEsbuildPlugin } from '@sentry/esbuild-plugin';
import type { BuildOptions, Plugin } from 'esbuild';
@@ -24,12 +24,10 @@ export const config = (): BuildOptions => {
'process.env.NODE_ENV': process.env.NODE_ENV,
REPLACE_ME_BUILD_ENV: process.env.BUILD_TYPE ?? 'stable',
...Object.entries(
getBuildConfig({
channel: (process.env.BUILD_TYPE as any) ?? 'canary',
distribution: 'desktop',
getBuildConfig(new Package('@affine/electron'), {
mode:
process.env.NODE_ENV === 'production' ? 'production' : 'development',
static: false,
channel: (process.env.BUILD_TYPE as any) ?? 'canary',
})
).reduce(
(def, [key, val]) => {

View File

@@ -34,6 +34,7 @@ function spawnOrReloadElectron() {
const ext = process.platform === 'win32' ? '.cmd' : '';
const exe = resolve(rootDir, 'node_modules', '.bin', `electron${ext}`);
delete process.env['NODE_OPTIONS'];
spawnProcess = spawn(exe, ['.'], {
cwd: electronDir,
env: process.env,

View File

@@ -33,6 +33,9 @@
},
{
"path": "../../../../tests/kit"
},
{
"path": "../../../../tools/utils"
}
],
"ts-node": {

View File

@@ -5,7 +5,7 @@
"target": "ESNext",
"module": "ESNext",
"resolveJsonModule": true,
"moduleResolution": "Node",
"moduleResolution": "bundler",
"allowSyntheticDefaultImports": true,
"noEmit": false,
"outDir": "./lib/scripts",
@@ -17,5 +17,10 @@
"ts-node": {
"esm": true,
"experimentalSpecifierResolution": "node"
}
},
"references": [
{
"path": "../../../../tools/utils"
}
]
}

View File

@@ -1,3 +1,4 @@
// TODO(@forehalo): reuse '@affine-tools/utils' once it's ready to switch to esm module
import { resolve } from 'node:path';
import { fileURLToPath } from 'node:url';

View File

@@ -0,0 +1,12 @@
// TODO(@forehalo): all packages would become 'module'
const path = require('node:path');
module.exports.config = {
entry: {
app: './renderer/index.tsx',
shell: './renderer/shell/index.tsx',
},
output: {
path: path.resolve(__dirname, './renderer/dist'),
},
};