mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-09-06 08:50:50 +08:00
feat: add local blocksuite debug support (#3591)
Co-authored-by: Alex Yang <himself65@outlook.com>
This commit is contained in:
@@ -73,6 +73,8 @@ export const createConfiguration: (
|
|||||||
) => webpack.Configuration = (buildFlags, runtimeConfig) => {
|
) => webpack.Configuration = (buildFlags, runtimeConfig) => {
|
||||||
let publicPath = process.env.PUBLIC_PATH ?? '/';
|
let publicPath = process.env.PUBLIC_PATH ?? '/';
|
||||||
|
|
||||||
|
const blocksuiteBaseDir = buildFlags.localBlockSuite;
|
||||||
|
|
||||||
const cacheKey = computeCacheKey(buildFlags);
|
const cacheKey = computeCacheKey(buildFlags);
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
@@ -121,6 +123,66 @@ export const createConfiguration: (
|
|||||||
'.mjs': ['.mjs', '.mts'],
|
'.mjs': ['.mjs', '.mts'],
|
||||||
},
|
},
|
||||||
extensions: ['.js', '.ts', '.tsx'],
|
extensions: ['.js', '.ts', '.tsx'],
|
||||||
|
fallback:
|
||||||
|
blocksuiteBaseDir === undefined
|
||||||
|
? undefined
|
||||||
|
: {
|
||||||
|
events: false,
|
||||||
|
},
|
||||||
|
alias:
|
||||||
|
blocksuiteBaseDir === undefined
|
||||||
|
? undefined
|
||||||
|
: {
|
||||||
|
yjs: require.resolve('yjs'),
|
||||||
|
'@blocksuite/block-std': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'block-std'
|
||||||
|
),
|
||||||
|
'@blocksuite/blocks': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'blocks'
|
||||||
|
),
|
||||||
|
'@blocksuite/editor': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'editor'
|
||||||
|
),
|
||||||
|
'@blocksuite/global': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'global'
|
||||||
|
),
|
||||||
|
'@blocksuite/lit': resolve(blocksuiteBaseDir, 'packages', 'lit'),
|
||||||
|
'@blocksuite/phasor': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'phasor'
|
||||||
|
),
|
||||||
|
'@blocksuite/store/workspace/migration/migrate-block': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'store',
|
||||||
|
'src/workspace/migration/migrate-block'
|
||||||
|
),
|
||||||
|
'@blocksuite/store/providers/broadcast-channel': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'store',
|
||||||
|
'src/providers/broadcast-channel'
|
||||||
|
),
|
||||||
|
'@blocksuite/store': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'store'
|
||||||
|
),
|
||||||
|
'@blocksuite/virgo': resolve(
|
||||||
|
blocksuiteBaseDir,
|
||||||
|
'packages',
|
||||||
|
'virgo'
|
||||||
|
),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
cache: {
|
cache: {
|
||||||
@@ -167,8 +229,7 @@ export const createConfiguration: (
|
|||||||
oneOf: [
|
oneOf: [
|
||||||
{
|
{
|
||||||
test: /\.tsx?$/,
|
test: /\.tsx?$/,
|
||||||
// Compile all ts files in the workspace
|
exclude: /node_modules/,
|
||||||
include: resolve(rootPath, '..', '..'),
|
|
||||||
loader: require.resolve('swc-loader'),
|
loader: require.resolve('swc-loader'),
|
||||||
options: {
|
options: {
|
||||||
// https://swc.rs/docs/configuring-swc/
|
// https://swc.rs/docs/configuring-swc/
|
||||||
@@ -179,9 +240,10 @@ export const createConfiguration: (
|
|||||||
dynamicImport: true,
|
dynamicImport: true,
|
||||||
topLevelAwait: false,
|
topLevelAwait: false,
|
||||||
tsx: true,
|
tsx: true,
|
||||||
|
decorators: true,
|
||||||
},
|
},
|
||||||
target: 'es2022',
|
target: 'es2022',
|
||||||
externalHelpers: true,
|
externalHelpers: false,
|
||||||
transform: {
|
transform: {
|
||||||
react: {
|
react: {
|
||||||
runtime: 'automatic',
|
runtime: 'automatic',
|
||||||
@@ -191,6 +253,7 @@ export const createConfiguration: (
|
|||||||
emitFullSignatures: true,
|
emitFullSignatures: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
useDefineForClassFields: false,
|
||||||
},
|
},
|
||||||
experimental: {
|
experimental: {
|
||||||
keepImportAssertions: true,
|
keepImportAssertions: true,
|
||||||
|
|||||||
@@ -7,5 +7,6 @@ export function computeCacheKey(buildFlags: BuildFlags) {
|
|||||||
buildFlags.mode,
|
buildFlags.mode,
|
||||||
buildFlags.distribution,
|
buildFlags.distribution,
|
||||||
buildFlags.channel,
|
buildFlags.channel,
|
||||||
|
...(process.env.LOCAL_BLOCK_SUITE ? [process.env.LOCAL_BLOCK_SUITE] : []),
|
||||||
].join('-');
|
].join('-');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ const flags: BuildFlags = {
|
|||||||
mode: 'development',
|
mode: 'development',
|
||||||
channel: 'canary',
|
channel: 'canary',
|
||||||
coverage: false,
|
coverage: false,
|
||||||
|
localBlockSuite: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
const buildFlags = await p.group(
|
const buildFlags = await p.group(
|
||||||
@@ -79,6 +80,11 @@ const buildFlags = await p.group(
|
|||||||
message: 'Enable coverage',
|
message: 'Enable coverage',
|
||||||
initialValue: process.env.COVERAGE === 'true',
|
initialValue: process.env.COVERAGE === 'true',
|
||||||
}),
|
}),
|
||||||
|
debugBlockSuite: () =>
|
||||||
|
p.confirm({
|
||||||
|
message: 'Debug blocksuite locally?',
|
||||||
|
initialValue: false,
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
onCancel: () => {
|
onCancel: () => {
|
||||||
@@ -88,6 +94,27 @@ const buildFlags = await p.group(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (buildFlags.debugBlockSuite) {
|
||||||
|
const { config } = await import('dotenv');
|
||||||
|
const envLocal = config({
|
||||||
|
path: path.resolve(cwd, '.env.local'),
|
||||||
|
});
|
||||||
|
|
||||||
|
const localBlockSuite = await p.text({
|
||||||
|
message: 'local blocksuite PATH',
|
||||||
|
initialValue: envLocal.error
|
||||||
|
? undefined
|
||||||
|
: envLocal.parsed?.LOCAL_BLOCK_SUITE,
|
||||||
|
});
|
||||||
|
if (typeof localBlockSuite !== 'string') {
|
||||||
|
throw new Error('local blocksuite PATH is required');
|
||||||
|
}
|
||||||
|
if (!existsSync(localBlockSuite)) {
|
||||||
|
throw new Error(`local blocksuite not found: ${localBlockSuite}`);
|
||||||
|
}
|
||||||
|
flags.localBlockSuite = localBlockSuite;
|
||||||
|
}
|
||||||
|
|
||||||
flags.distribution = buildFlags.distribution as any;
|
flags.distribution = buildFlags.distribution as any;
|
||||||
flags.mode = buildFlags.mode as any;
|
flags.mode = buildFlags.mode as any;
|
||||||
flags.channel = buildFlags.channel as any;
|
flags.channel = buildFlags.channel as any;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ export type BuildFlags = {
|
|||||||
mode: 'development' | 'production';
|
mode: 'development' | 'production';
|
||||||
channel: 'stable' | 'beta' | 'canary' | 'internal';
|
channel: 'stable' | 'beta' | 'canary' | 'internal';
|
||||||
coverage?: boolean;
|
coverage?: boolean;
|
||||||
|
localBlockSuite?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const projectRoot = fileURLToPath(
|
export const projectRoot = fileURLToPath(
|
||||||
|
|||||||
Reference in New Issue
Block a user