@10up/build 1.0.0-alpha.2 → 1.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -12
- package/dist/cli.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wp-deps.d.ts +34 -0
- package/dist/wp-deps.d.ts.map +1 -0
- package/dist/wp-deps.js +412 -0
- package/dist/wp-deps.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -330,6 +330,9 @@ Features:
|
|
|
330
330
|
| `10up-build build` | Production build (default) |
|
|
331
331
|
| `10up-build start` | Development mode with HMR |
|
|
332
332
|
| `10up-build watch` | Watch mode without HMR |
|
|
333
|
+
| `10up-build sync-wp-deps` | Scan source files and install @wordpress/* as optional dependencies |
|
|
334
|
+
| `10up-build update-wp-deps` | Update all @wordpress/* optional dependencies to a new version tag |
|
|
335
|
+
| `10up-build list-wp-deps` | List installed @wordpress/* dependencies |
|
|
333
336
|
|
|
334
337
|
### Options
|
|
335
338
|
|
|
@@ -339,6 +342,160 @@ Features:
|
|
|
339
342
|
| `--version`, `-v` | Show version number |
|
|
340
343
|
| `--hot` | Enable hot reload |
|
|
341
344
|
| `--port=<port>` | HMR server port |
|
|
345
|
+
| `--tag=<tag>` | WordPress version tag for dependency commands (auto-detects latest if not specified) |
|
|
346
|
+
| `--dry-run` | Show what would be done without making changes |
|
|
347
|
+
|
|
348
|
+
## WordPress Dependency Management
|
|
349
|
+
|
|
350
|
+
The build tool includes commands to manage `@wordpress/*` packages as optional dependencies. This provides better TypeScript support and IDE autocompletion while keeping the packages external at runtime (loaded from WordPress globals).
|
|
351
|
+
|
|
352
|
+
### Why Optional Dependencies?
|
|
353
|
+
|
|
354
|
+
When `@wordpress/*` packages are installed as optional dependencies:
|
|
355
|
+
- **TypeScript/IDE support**: Full type definitions and autocompletion
|
|
356
|
+
- **No bundle bloat**: Packages are still externalized (loaded from WordPress)
|
|
357
|
+
- **Version alignment**: Match your target WordPress version exactly
|
|
358
|
+
- **Dependency tracking**: Clear visibility of which packages your code uses
|
|
359
|
+
|
|
360
|
+
### Syncing Dependencies
|
|
361
|
+
|
|
362
|
+
Scan your source files for `@wordpress/*` imports and install them:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# Auto-detect latest WordPress version from API
|
|
366
|
+
10up-build sync-wp-deps
|
|
367
|
+
|
|
368
|
+
# Use a specific WordPress version tag
|
|
369
|
+
10up-build sync-wp-deps --tag=wp-6.8
|
|
370
|
+
|
|
371
|
+
# Preview changes without installing
|
|
372
|
+
10up-build sync-wp-deps --dry-run
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**Example output:**
|
|
376
|
+
```
|
|
377
|
+
10up-build - Sync WordPress Dependencies
|
|
378
|
+
|
|
379
|
+
Fetching latest WordPress version...
|
|
380
|
+
Using tag: wp-6.9
|
|
381
|
+
|
|
382
|
+
Scanning for @wordpress/* imports...
|
|
383
|
+
Found 7 @wordpress packages:
|
|
384
|
+
|
|
385
|
+
• @wordpress/block-editor
|
|
386
|
+
• @wordpress/blocks
|
|
387
|
+
• @wordpress/components
|
|
388
|
+
• @wordpress/data
|
|
389
|
+
• @wordpress/i18n
|
|
390
|
+
• @wordpress/icons
|
|
391
|
+
• @wordpress/interactivity
|
|
392
|
+
|
|
393
|
+
Packages to install with tag wp-6.9:
|
|
394
|
+
+ @wordpress/icons@wp-6.9
|
|
395
|
+
+ @wordpress/interactivity@wp-6.9
|
|
396
|
+
|
|
397
|
+
Already installed (5 packages):
|
|
398
|
+
• @wordpress/block-editor@^15.6.8
|
|
399
|
+
...
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### Monorepo Support
|
|
403
|
+
|
|
404
|
+
For monorepos, use `--workspace-scan` to scan all workspaces and install dependencies at the root level. This is much faster than installing in each workspace individually:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
# From anywhere in the monorepo
|
|
408
|
+
10up-build sync-wp-deps --workspace-scan
|
|
409
|
+
|
|
410
|
+
# With a specific tag
|
|
411
|
+
10up-build sync-wp-deps --workspace-scan --tag=wp-6.8
|
|
412
|
+
|
|
413
|
+
# Preview what would be installed
|
|
414
|
+
10up-build sync-wp-deps --workspace-scan --dry-run
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**Example output:**
|
|
418
|
+
```
|
|
419
|
+
10up-build - Sync WordPress Dependencies
|
|
420
|
+
|
|
421
|
+
Fetching latest WordPress version...
|
|
422
|
+
Using tag: wp-6.9
|
|
423
|
+
|
|
424
|
+
Monorepo root: /path/to/monorepo
|
|
425
|
+
|
|
426
|
+
Scanning 15 workspaces for @wordpress/* imports...
|
|
427
|
+
|
|
428
|
+
• plugins/my-plugin: 7 packages
|
|
429
|
+
• plugins/another-plugin: 5 packages
|
|
430
|
+
• themes/my-theme: 3 packages
|
|
431
|
+
|
|
432
|
+
Found 12 unique @wordpress packages:
|
|
433
|
+
|
|
434
|
+
• @wordpress/block-editor
|
|
435
|
+
• @wordpress/blocks
|
|
436
|
+
• @wordpress/components
|
|
437
|
+
...
|
|
438
|
+
|
|
439
|
+
Installing at monorepo root: /path/to/monorepo
|
|
440
|
+
|
|
441
|
+
Installing 12 packages...
|
|
442
|
+
✓ WordPress dependencies synced successfully!
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Updating Dependencies
|
|
446
|
+
|
|
447
|
+
Update all `@wordpress/*` optional dependencies to a new WordPress version:
|
|
448
|
+
|
|
449
|
+
```bash
|
|
450
|
+
# Update to WordPress 6.9
|
|
451
|
+
10up-build update-wp-deps --tag=wp-6.9
|
|
452
|
+
|
|
453
|
+
# Preview changes
|
|
454
|
+
10up-build update-wp-deps --tag=wp-7.0 --dry-run
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
**Note:** WordPress npm tags follow the pattern `wp-X.Y` (major.minor only). Patch releases don't get new npm tags, so `wp-6.9` covers 6.9.0, 6.9.1, 6.9.2, etc.
|
|
458
|
+
|
|
459
|
+
### Listing Dependencies
|
|
460
|
+
|
|
461
|
+
View currently installed `@wordpress/*` packages and check for missing imports:
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
10up-build list-wp-deps
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
**Example output:**
|
|
468
|
+
```
|
|
469
|
+
10up-build - WordPress Dependencies
|
|
470
|
+
|
|
471
|
+
Installed @wordpress packages (5):
|
|
472
|
+
|
|
473
|
+
• @wordpress/block-editor@^15.6.8
|
|
474
|
+
• @wordpress/blocks@^15.6.2
|
|
475
|
+
• @wordpress/components@^30.6.4
|
|
476
|
+
• @wordpress/data@^10.33.1
|
|
477
|
+
• @wordpress/i18n@^6.6.1
|
|
478
|
+
|
|
479
|
+
Scanning source files for imports...
|
|
480
|
+
|
|
481
|
+
Missing packages (2):
|
|
482
|
+
! @wordpress/icons
|
|
483
|
+
! @wordpress/interactivity
|
|
484
|
+
|
|
485
|
+
Run 10up-build sync-wp-deps to install missing packages.
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
### Version Tags
|
|
489
|
+
|
|
490
|
+
WordPress packages on npm are tagged by WordPress version:
|
|
491
|
+
|
|
492
|
+
| WordPress Version | npm Tag |
|
|
493
|
+
|-------------------|---------|
|
|
494
|
+
| 6.9.x | `wp-6.9` |
|
|
495
|
+
| 6.8.x | `wp-6.8` |
|
|
496
|
+
| 6.7.x | `wp-6.7` |
|
|
497
|
+
|
|
498
|
+
When no `--tag` is specified, `sync-wp-deps` automatically fetches the latest WordPress version from the WordPress.org API.
|
|
342
499
|
|
|
343
500
|
## Output Structure
|
|
344
501
|
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuIH;;GAEG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BvD"}
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import pc from 'picocolors';
|
|
5
5
|
import { build } from './build.js';
|
|
6
6
|
import { watch } from './watch.js';
|
|
7
|
+
import { syncWpDeps, updateWpDeps, listWpDeps } from './wp-deps.js';
|
|
7
8
|
/**
|
|
8
9
|
* Parse CLI arguments
|
|
9
10
|
*/
|
|
@@ -36,32 +37,42 @@ ${pc.bold('Usage:')}
|
|
|
36
37
|
10up-build <command> [options]
|
|
37
38
|
|
|
38
39
|
${pc.bold('Commands:')}
|
|
39
|
-
build
|
|
40
|
-
start
|
|
41
|
-
watch
|
|
40
|
+
build Build for production (default)
|
|
41
|
+
start Start development mode with watch and hot reload
|
|
42
|
+
watch Watch for changes without hot reload
|
|
43
|
+
sync-wp-deps Scan source files and install @wordpress/* as optional deps
|
|
44
|
+
update-wp-deps Update all @wordpress/* optional deps to a new version tag
|
|
45
|
+
list-wp-deps List installed @wordpress/* dependencies
|
|
42
46
|
|
|
43
47
|
${pc.bold('Options:')}
|
|
44
|
-
--help, -h
|
|
45
|
-
--version, -v
|
|
46
|
-
--hot
|
|
47
|
-
--port=<port>
|
|
48
|
+
--help, -h Show this help message
|
|
49
|
+
--version, -v Show version number
|
|
50
|
+
--hot Enable hot reload (default in start mode)
|
|
51
|
+
--port=<port> HMR server port (default: 8887)
|
|
52
|
+
--tag=<tag> WordPress version tag (auto-detects latest if not specified)
|
|
53
|
+
--dry-run Show what would be done without making changes
|
|
54
|
+
--workspace-scan Scan all workspaces and install at monorepo root
|
|
48
55
|
|
|
49
56
|
${pc.bold('Configuration:')}
|
|
50
57
|
Configure via package.json "10up-toolkit" field.
|
|
51
58
|
See documentation for all options.
|
|
52
59
|
|
|
53
60
|
${pc.bold('Examples:')}
|
|
54
|
-
10up-build
|
|
55
|
-
10up-build start
|
|
56
|
-
10up-build watch
|
|
57
|
-
10up-build
|
|
61
|
+
10up-build # Production build
|
|
62
|
+
10up-build start # Development with hot reload
|
|
63
|
+
10up-build watch # Watch without hot reload
|
|
64
|
+
10up-build sync-wp-deps # Install @wordpress deps (auto-detects latest WP)
|
|
65
|
+
10up-build sync-wp-deps --tag=wp-6.8 # Use specific WP version tag
|
|
66
|
+
10up-build sync-wp-deps --workspace-scan # Scan all workspaces, install at root
|
|
67
|
+
10up-build update-wp-deps --tag=wp-6.9 # Update to new WP version
|
|
68
|
+
10up-build list-wp-deps # Show installed @wordpress deps
|
|
58
69
|
`);
|
|
59
70
|
}
|
|
60
71
|
/**
|
|
61
72
|
* Show version
|
|
62
73
|
*/
|
|
63
74
|
function showVersion() {
|
|
64
|
-
console.log('10up-build v1.0.0-alpha.
|
|
75
|
+
console.log('10up-build v1.0.0-alpha.4');
|
|
65
76
|
}
|
|
66
77
|
/**
|
|
67
78
|
* Command handlers
|
|
@@ -88,6 +99,29 @@ const commands = {
|
|
|
88
99
|
port: flags.port ? parseInt(String(flags.port), 10) : undefined,
|
|
89
100
|
});
|
|
90
101
|
},
|
|
102
|
+
'sync-wp-deps': async (args) => {
|
|
103
|
+
const { flags } = parseArgs(['sync-wp-deps', ...args]);
|
|
104
|
+
await syncWpDeps({
|
|
105
|
+
tag: flags.tag ? String(flags.tag) : undefined,
|
|
106
|
+
dryRun: flags['dry-run'] === true,
|
|
107
|
+
workspaceScan: flags['workspace-scan'] === true,
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
'update-wp-deps': async (args) => {
|
|
111
|
+
const { flags } = parseArgs(['update-wp-deps', ...args]);
|
|
112
|
+
if (!flags.tag) {
|
|
113
|
+
console.error(pc.red('Error: --tag is required for update-wp-deps'));
|
|
114
|
+
console.log(pc.dim('Example: 10up-build update-wp-deps --tag=wp-6.9'));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
await updateWpDeps({
|
|
118
|
+
tag: String(flags.tag),
|
|
119
|
+
dryRun: flags['dry-run'] === true,
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
'list-wp-deps': async () => {
|
|
123
|
+
await listWpDeps();
|
|
124
|
+
},
|
|
91
125
|
};
|
|
92
126
|
/**
|
|
93
127
|
* Main CLI entry point
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -455,6 +455,12 @@ export interface Commands {
|
|
|
455
455
|
start: CommandHandler;
|
|
456
456
|
/** Watch mode without HMR */
|
|
457
457
|
watch: CommandHandler;
|
|
458
|
+
/** Sync @wordpress dependencies from source imports */
|
|
459
|
+
'sync-wp-deps': CommandHandler;
|
|
460
|
+
/** Update @wordpress dependencies to a new version tag */
|
|
461
|
+
'update-wp-deps': CommandHandler;
|
|
462
|
+
/** List installed @wordpress dependencies */
|
|
463
|
+
'list-wp-deps': CommandHandler;
|
|
458
464
|
}
|
|
459
465
|
/**
|
|
460
466
|
* WordPress block.json metadata structure.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependency management utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides commands to sync and update @wordpress/* dependencies
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Sync @wordpress dependencies
|
|
8
|
+
*
|
|
9
|
+
* Scans source files for @wordpress/* imports and installs them
|
|
10
|
+
* as optional dependencies using the specified WordPress version tag.
|
|
11
|
+
*
|
|
12
|
+
* With --workspace-scan, scans all workspaces in a monorepo and installs
|
|
13
|
+
* dependencies at the root level for better performance.
|
|
14
|
+
*/
|
|
15
|
+
export declare function syncWpDeps(options?: {
|
|
16
|
+
tag?: string;
|
|
17
|
+
dryRun?: boolean;
|
|
18
|
+
workspaceScan?: boolean;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Update @wordpress dependencies to a new tag
|
|
22
|
+
*
|
|
23
|
+
* Updates all @wordpress/* packages in optionalDependencies
|
|
24
|
+
* to the specified WordPress version tag.
|
|
25
|
+
*/
|
|
26
|
+
export declare function updateWpDeps(options: {
|
|
27
|
+
tag: string;
|
|
28
|
+
dryRun?: boolean;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* List current @wordpress dependencies
|
|
32
|
+
*/
|
|
33
|
+
export declare function listWpDeps(): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=wp-deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wp-deps.d.ts","sourceRoot":"","sources":["../src/wp-deps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2QH;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC/B,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACvE,OAAO,CAAC,IAAI,CAAC,CAgHf;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C5F;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAsChD"}
|
package/dist/wp-deps.js
ADDED
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependency management utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides commands to sync and update @wordpress/* dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { execSync } from 'child_process';
|
|
7
|
+
import { readFileSync, existsSync } from 'fs';
|
|
8
|
+
import { join, dirname } from 'path';
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
import fg from 'fast-glob';
|
|
11
|
+
const WP_VERSION_API = 'https://api.wordpress.org/core/version-check/1.7/';
|
|
12
|
+
/**
|
|
13
|
+
* Fetch the latest WordPress version from the API
|
|
14
|
+
* and convert it to an npm tag (e.g., "6.9.3" -> "wp-6.9")
|
|
15
|
+
*/
|
|
16
|
+
async function getLatestWpTag() {
|
|
17
|
+
try {
|
|
18
|
+
const response = await fetch(WP_VERSION_API);
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
throw new Error(`HTTP ${response.status}`);
|
|
21
|
+
}
|
|
22
|
+
const data = (await response.json());
|
|
23
|
+
// Get the first offer which is the latest version
|
|
24
|
+
const latestVersion = data.offers?.[0]?.version;
|
|
25
|
+
if (!latestVersion) {
|
|
26
|
+
throw new Error('No version found in API response');
|
|
27
|
+
}
|
|
28
|
+
// Convert version to tag: "6.9.3" -> "wp-6.9" (only major.minor)
|
|
29
|
+
const [major, minor] = latestVersion.split('.');
|
|
30
|
+
return `wp-${major}.${minor}`;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.warn(pc.yellow(`\nWarning: Could not fetch latest WordPress version from API.`));
|
|
34
|
+
console.warn(pc.dim(`Using fallback: wp-6.8\n`));
|
|
35
|
+
return 'wp-6.8';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Known @wordpress packages that are available on npm
|
|
40
|
+
* This list includes packages commonly used in WordPress block development
|
|
41
|
+
*/
|
|
42
|
+
const KNOWN_WP_PACKAGES = new Set([
|
|
43
|
+
'@wordpress/a11y',
|
|
44
|
+
'@wordpress/annotations',
|
|
45
|
+
'@wordpress/api-fetch',
|
|
46
|
+
'@wordpress/autop',
|
|
47
|
+
'@wordpress/blob',
|
|
48
|
+
'@wordpress/block-directory',
|
|
49
|
+
'@wordpress/block-editor',
|
|
50
|
+
'@wordpress/block-library',
|
|
51
|
+
'@wordpress/block-serialization-default-parser',
|
|
52
|
+
'@wordpress/blocks',
|
|
53
|
+
'@wordpress/commands',
|
|
54
|
+
'@wordpress/components',
|
|
55
|
+
'@wordpress/compose',
|
|
56
|
+
'@wordpress/core-commands',
|
|
57
|
+
'@wordpress/core-data',
|
|
58
|
+
'@wordpress/data',
|
|
59
|
+
'@wordpress/data-controls',
|
|
60
|
+
'@wordpress/dataviews',
|
|
61
|
+
'@wordpress/date',
|
|
62
|
+
'@wordpress/deprecated',
|
|
63
|
+
'@wordpress/dom',
|
|
64
|
+
'@wordpress/dom-ready',
|
|
65
|
+
'@wordpress/edit-post',
|
|
66
|
+
'@wordpress/edit-site',
|
|
67
|
+
'@wordpress/edit-widgets',
|
|
68
|
+
'@wordpress/editor',
|
|
69
|
+
'@wordpress/element',
|
|
70
|
+
'@wordpress/escape-html',
|
|
71
|
+
'@wordpress/format-library',
|
|
72
|
+
'@wordpress/hooks',
|
|
73
|
+
'@wordpress/html-entities',
|
|
74
|
+
'@wordpress/i18n',
|
|
75
|
+
'@wordpress/icons',
|
|
76
|
+
'@wordpress/interactivity',
|
|
77
|
+
'@wordpress/interactivity-router',
|
|
78
|
+
'@wordpress/interface',
|
|
79
|
+
'@wordpress/is-shallow-equal',
|
|
80
|
+
'@wordpress/keyboard-shortcuts',
|
|
81
|
+
'@wordpress/keycodes',
|
|
82
|
+
'@wordpress/list-reusable-blocks',
|
|
83
|
+
'@wordpress/media-utils',
|
|
84
|
+
'@wordpress/notices',
|
|
85
|
+
'@wordpress/nux',
|
|
86
|
+
'@wordpress/patterns',
|
|
87
|
+
'@wordpress/plugins',
|
|
88
|
+
'@wordpress/preferences',
|
|
89
|
+
'@wordpress/preferences-persistence',
|
|
90
|
+
'@wordpress/primitives',
|
|
91
|
+
'@wordpress/priority-queue',
|
|
92
|
+
'@wordpress/private-apis',
|
|
93
|
+
'@wordpress/redux-routine',
|
|
94
|
+
'@wordpress/reusable-blocks',
|
|
95
|
+
'@wordpress/rich-text',
|
|
96
|
+
'@wordpress/router',
|
|
97
|
+
'@wordpress/server-side-render',
|
|
98
|
+
'@wordpress/shortcode',
|
|
99
|
+
'@wordpress/style-engine',
|
|
100
|
+
'@wordpress/token-list',
|
|
101
|
+
'@wordpress/url',
|
|
102
|
+
'@wordpress/viewport',
|
|
103
|
+
'@wordpress/warning',
|
|
104
|
+
'@wordpress/widgets',
|
|
105
|
+
'@wordpress/wordcount',
|
|
106
|
+
]);
|
|
107
|
+
/**
|
|
108
|
+
* Scan source files for @wordpress/* imports
|
|
109
|
+
*/
|
|
110
|
+
async function scanForWordPressImports(cwd) {
|
|
111
|
+
const imports = new Set();
|
|
112
|
+
// Find all JS/TS source files, excluding node_modules and dist
|
|
113
|
+
const files = await fg(['**/*.{js,jsx,ts,tsx}'], {
|
|
114
|
+
cwd,
|
|
115
|
+
ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/vendor/**'],
|
|
116
|
+
absolute: true,
|
|
117
|
+
});
|
|
118
|
+
// Regex patterns to match imports
|
|
119
|
+
const importPatterns = [
|
|
120
|
+
/import\s+.*?from\s+['"](@wordpress\/[^'"\/]+)/g,
|
|
121
|
+
/import\s*\(\s*['"](@wordpress\/[^'"\/]+)/g,
|
|
122
|
+
/require\s*\(\s*['"](@wordpress\/[^'"\/]+)/g,
|
|
123
|
+
];
|
|
124
|
+
for (const file of files) {
|
|
125
|
+
try {
|
|
126
|
+
const content = readFileSync(file, 'utf-8');
|
|
127
|
+
for (const pattern of importPatterns) {
|
|
128
|
+
let match;
|
|
129
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
130
|
+
const packageName = match[1];
|
|
131
|
+
if (KNOWN_WP_PACKAGES.has(packageName)) {
|
|
132
|
+
imports.add(packageName);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Skip files that can't be read
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return imports;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Read package.json from the current directory
|
|
145
|
+
*/
|
|
146
|
+
function readPackageJson(cwd) {
|
|
147
|
+
const packageJsonPath = join(cwd, 'package.json');
|
|
148
|
+
try {
|
|
149
|
+
return JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
throw new Error(`Could not read package.json at ${packageJsonPath}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get existing @wordpress packages from optionalDependencies
|
|
157
|
+
*/
|
|
158
|
+
function getExistingWpDeps(packageJson) {
|
|
159
|
+
const deps = new Map();
|
|
160
|
+
const optionalDeps = (packageJson.optionalDependencies || {});
|
|
161
|
+
for (const [name, version] of Object.entries(optionalDeps)) {
|
|
162
|
+
if (name.startsWith('@wordpress/')) {
|
|
163
|
+
deps.set(name, version);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return deps;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Find the monorepo root by looking for package.json with workspaces field
|
|
170
|
+
*/
|
|
171
|
+
function findMonorepoRoot(startDir) {
|
|
172
|
+
let dir = startDir;
|
|
173
|
+
while (dir !== dirname(dir)) {
|
|
174
|
+
const packageJsonPath = join(dir, 'package.json');
|
|
175
|
+
if (existsSync(packageJsonPath)) {
|
|
176
|
+
try {
|
|
177
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
178
|
+
if (packageJson.workspaces) {
|
|
179
|
+
return dir;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Continue searching
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
dir = dirname(dir);
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get workspace directories from monorepo root
|
|
192
|
+
*/
|
|
193
|
+
async function getWorkspaceDirectories(rootDir) {
|
|
194
|
+
const packageJson = readPackageJson(rootDir);
|
|
195
|
+
const workspaces = packageJson.workspaces;
|
|
196
|
+
if (!workspaces) {
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
// Handle both array format and object format { packages: [...] }
|
|
200
|
+
const patterns = Array.isArray(workspaces) ? workspaces : workspaces.packages || [];
|
|
201
|
+
// Expand glob patterns to find actual workspace directories
|
|
202
|
+
const directories = [];
|
|
203
|
+
for (const pattern of patterns) {
|
|
204
|
+
// Find directories matching the pattern that contain package.json
|
|
205
|
+
const matches = await fg([`${pattern}/package.json`], {
|
|
206
|
+
cwd: rootDir,
|
|
207
|
+
absolute: true,
|
|
208
|
+
onlyFiles: true,
|
|
209
|
+
});
|
|
210
|
+
for (const match of matches) {
|
|
211
|
+
directories.push(dirname(match));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return directories;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Scan all workspaces for @wordpress/* imports
|
|
218
|
+
*/
|
|
219
|
+
async function scanWorkspacesForWordPressImports(rootDir, workspaceDirs) {
|
|
220
|
+
const allImports = new Set();
|
|
221
|
+
console.log(`Scanning ${pc.bold(String(workspaceDirs.length))} workspaces for @wordpress/* imports...\n`);
|
|
222
|
+
for (const dir of workspaceDirs) {
|
|
223
|
+
const imports = await scanForWordPressImports(dir);
|
|
224
|
+
if (imports.size > 0) {
|
|
225
|
+
const relativePath = dir.replace(rootDir + '/', '');
|
|
226
|
+
console.log(` ${pc.dim('•')} ${relativePath}: ${imports.size} packages`);
|
|
227
|
+
for (const pkg of imports) {
|
|
228
|
+
allImports.add(pkg);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return allImports;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Sync @wordpress dependencies
|
|
236
|
+
*
|
|
237
|
+
* Scans source files for @wordpress/* imports and installs them
|
|
238
|
+
* as optional dependencies using the specified WordPress version tag.
|
|
239
|
+
*
|
|
240
|
+
* With --workspace-scan, scans all workspaces in a monorepo and installs
|
|
241
|
+
* dependencies at the root level for better performance.
|
|
242
|
+
*/
|
|
243
|
+
export async function syncWpDeps(options = {}) {
|
|
244
|
+
const cwd = process.cwd();
|
|
245
|
+
const dryRun = options.dryRun || false;
|
|
246
|
+
const workspaceScan = options.workspaceScan || false;
|
|
247
|
+
console.log(pc.cyan('\n10up-build') + ' - Sync WordPress Dependencies\n');
|
|
248
|
+
// Get tag from options or fetch latest from WordPress API
|
|
249
|
+
let tag = options.tag;
|
|
250
|
+
if (!tag) {
|
|
251
|
+
console.log(`Fetching latest WordPress version...`);
|
|
252
|
+
tag = await getLatestWpTag();
|
|
253
|
+
console.log(`Using tag: ${pc.cyan(tag)}\n`);
|
|
254
|
+
}
|
|
255
|
+
let foundImports;
|
|
256
|
+
let installDir;
|
|
257
|
+
if (workspaceScan) {
|
|
258
|
+
// Find monorepo root
|
|
259
|
+
const monorepoRoot = findMonorepoRoot(cwd);
|
|
260
|
+
if (!monorepoRoot) {
|
|
261
|
+
console.error(pc.red('Error: Could not find monorepo root (no package.json with workspaces field).'));
|
|
262
|
+
console.log(pc.dim('Run from within a monorepo or use without --workspace-scan.'));
|
|
263
|
+
process.exit(1);
|
|
264
|
+
}
|
|
265
|
+
console.log(`Monorepo root: ${pc.dim(monorepoRoot)}\n`);
|
|
266
|
+
installDir = monorepoRoot;
|
|
267
|
+
// Get all workspace directories
|
|
268
|
+
const workspaceDirs = await getWorkspaceDirectories(monorepoRoot);
|
|
269
|
+
if (workspaceDirs.length === 0) {
|
|
270
|
+
console.error(pc.red('Error: No workspaces found in monorepo.'));
|
|
271
|
+
process.exit(1);
|
|
272
|
+
}
|
|
273
|
+
// Scan all workspaces
|
|
274
|
+
foundImports = await scanWorkspacesForWordPressImports(monorepoRoot, workspaceDirs);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
console.log(`Scanning for @wordpress/* imports...`);
|
|
278
|
+
foundImports = await scanForWordPressImports(cwd);
|
|
279
|
+
installDir = cwd;
|
|
280
|
+
}
|
|
281
|
+
if (foundImports.size === 0) {
|
|
282
|
+
console.log(pc.yellow('\nNo @wordpress/* imports found in source files.'));
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
console.log(`\nFound ${pc.bold(String(foundImports.size))} unique @wordpress packages:\n`);
|
|
286
|
+
// Sort for consistent output
|
|
287
|
+
const sortedImports = Array.from(foundImports).sort();
|
|
288
|
+
for (const pkg of sortedImports) {
|
|
289
|
+
console.log(` ${pc.dim('•')} ${pkg}`);
|
|
290
|
+
}
|
|
291
|
+
// Read package.json from install directory
|
|
292
|
+
const packageJson = readPackageJson(installDir);
|
|
293
|
+
const existingDeps = getExistingWpDeps(packageJson);
|
|
294
|
+
// Determine what needs to be installed
|
|
295
|
+
const toInstall = [];
|
|
296
|
+
const alreadyInstalled = [];
|
|
297
|
+
for (const pkg of sortedImports) {
|
|
298
|
+
if (existingDeps.has(pkg)) {
|
|
299
|
+
alreadyInstalled.push(pkg);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
toInstall.push(pkg);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (toInstall.length === 0) {
|
|
306
|
+
console.log(pc.green('\nAll @wordpress packages are already installed as optional dependencies.'));
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
console.log(`\nPackages to install with tag ${pc.cyan(tag)}:`);
|
|
310
|
+
for (const pkg of toInstall) {
|
|
311
|
+
console.log(` ${pc.green('+')} ${pkg}@${tag}`);
|
|
312
|
+
}
|
|
313
|
+
if (alreadyInstalled.length > 0) {
|
|
314
|
+
console.log(`\nAlready installed (${alreadyInstalled.length} packages):`);
|
|
315
|
+
for (const pkg of alreadyInstalled) {
|
|
316
|
+
console.log(` ${pc.dim('•')} ${pkg}@${existingDeps.get(pkg)}`);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (workspaceScan) {
|
|
320
|
+
console.log(`\n${pc.dim('Installing at monorepo root:')} ${installDir}`);
|
|
321
|
+
}
|
|
322
|
+
if (dryRun) {
|
|
323
|
+
console.log(pc.yellow('\nDry run - no changes made.'));
|
|
324
|
+
console.log(`Run without --dry-run to install packages.`);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
// Install packages
|
|
328
|
+
console.log(`\nInstalling ${toInstall.length} packages...`);
|
|
329
|
+
const installCmd = `npm install --save-optional ${toInstall.map(p => `${p}@${tag}`).join(' ')}`;
|
|
330
|
+
try {
|
|
331
|
+
execSync(installCmd, { cwd: installDir, stdio: 'inherit' });
|
|
332
|
+
console.log(pc.green('\n✓ WordPress dependencies synced successfully!'));
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
throw new Error('Failed to install packages. Check npm output above.');
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Update @wordpress dependencies to a new tag
|
|
340
|
+
*
|
|
341
|
+
* Updates all @wordpress/* packages in optionalDependencies
|
|
342
|
+
* to the specified WordPress version tag.
|
|
343
|
+
*/
|
|
344
|
+
export async function updateWpDeps(options) {
|
|
345
|
+
const cwd = process.cwd();
|
|
346
|
+
const { tag, dryRun = false } = options;
|
|
347
|
+
console.log(pc.cyan('\n10up-build') + ' - Update WordPress Dependencies\n');
|
|
348
|
+
// Read current package.json
|
|
349
|
+
const packageJson = readPackageJson(cwd);
|
|
350
|
+
const existingDeps = getExistingWpDeps(packageJson);
|
|
351
|
+
if (existingDeps.size === 0) {
|
|
352
|
+
console.log(pc.yellow('No @wordpress packages found in optionalDependencies.'));
|
|
353
|
+
console.log(`Run ${pc.cyan('10up-build sync-wp-deps')} first to add WordPress dependencies.`);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
console.log(`Found ${pc.bold(String(existingDeps.size))} @wordpress packages to update:\n`);
|
|
357
|
+
const sortedDeps = Array.from(existingDeps.entries()).sort((a, b) => a[0].localeCompare(b[0]));
|
|
358
|
+
for (const [pkg, currentVersion] of sortedDeps) {
|
|
359
|
+
console.log(` ${pkg}: ${pc.dim(currentVersion)} → ${pc.green(tag)}`);
|
|
360
|
+
}
|
|
361
|
+
if (dryRun) {
|
|
362
|
+
console.log(pc.yellow('\nDry run - no changes made.'));
|
|
363
|
+
console.log(`Run without --dry-run to update packages.`);
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
// Update packages
|
|
367
|
+
console.log(`\nUpdating to ${pc.cyan(tag)}...`);
|
|
368
|
+
const packages = sortedDeps.map(([pkg]) => `${pkg}@${tag}`);
|
|
369
|
+
const installCmd = `npm install --save-optional ${packages.join(' ')}`;
|
|
370
|
+
try {
|
|
371
|
+
execSync(installCmd, { cwd, stdio: 'inherit' });
|
|
372
|
+
console.log(pc.green('\n✓ WordPress dependencies updated successfully!'));
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
throw new Error('Failed to update packages. Check npm output above.');
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* List current @wordpress dependencies
|
|
380
|
+
*/
|
|
381
|
+
export async function listWpDeps() {
|
|
382
|
+
const cwd = process.cwd();
|
|
383
|
+
console.log(pc.cyan('\n10up-build') + ' - WordPress Dependencies\n');
|
|
384
|
+
// Read current package.json
|
|
385
|
+
const packageJson = readPackageJson(cwd);
|
|
386
|
+
const existingDeps = getExistingWpDeps(packageJson);
|
|
387
|
+
if (existingDeps.size === 0) {
|
|
388
|
+
console.log(pc.yellow('No @wordpress packages found in optionalDependencies.'));
|
|
389
|
+
console.log(`Run ${pc.cyan('10up-build sync-wp-deps')} to add WordPress dependencies.`);
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
console.log(`Installed @wordpress packages (${existingDeps.size}):\n`);
|
|
393
|
+
const sortedDeps = Array.from(existingDeps.entries()).sort((a, b) => a[0].localeCompare(b[0]));
|
|
394
|
+
for (const [pkg, version] of sortedDeps) {
|
|
395
|
+
console.log(` ${pc.dim('•')} ${pkg}@${pc.cyan(version)}`);
|
|
396
|
+
}
|
|
397
|
+
// Also scan for imports and show any missing
|
|
398
|
+
console.log(`\nScanning source files for imports...`);
|
|
399
|
+
const foundImports = await scanForWordPressImports(cwd);
|
|
400
|
+
const missing = Array.from(foundImports).filter(pkg => !existingDeps.has(pkg)).sort();
|
|
401
|
+
if (missing.length > 0) {
|
|
402
|
+
console.log(pc.yellow(`\nMissing packages (${missing.length}):`));
|
|
403
|
+
for (const pkg of missing) {
|
|
404
|
+
console.log(` ${pc.red('!')} ${pkg}`);
|
|
405
|
+
}
|
|
406
|
+
console.log(`\nRun ${pc.cyan('10up-build sync-wp-deps')} to install missing packages.`);
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
console.log(pc.green('\nAll imported @wordpress packages are installed.'));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
//# sourceMappingURL=wp-deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wp-deps.js","sourceRoot":"","sources":["../src/wp-deps.ts"],"names":[],"mappings":"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"}
|