feat: add local blocksuite debug support (#3591)

Co-authored-by: Alex Yang <himself65@outlook.com>
This commit is contained in:
fourdim
2023-08-08 01:44:31 +08:00
committed by GitHub
parent 952283fe16
commit ec05bd3f53
4 changed files with 95 additions and 3 deletions
+66 -3
View File
@@ -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,
+1
View File
@@ -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('-');
} }
+27
View File
@@ -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;
+1
View File
@@ -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(