monaco-editor-prepare.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { readFile } from 'fs/promises';
  2. import { join, resolve } from 'path';
  3. import { PackageJson, getNightlyVersion, group, run, writeJsonFile, gitCommitId } from '../lib';
  4. const selfPath = __dirname;
  5. const rootPath = join(selfPath, '..', '..');
  6. const monacoEditorPackageJsonPath = resolve(rootPath, 'package.json');
  7. const monacoEditorCorePackageJsonPath = resolve(
  8. rootPath,
  9. 'node_modules',
  10. 'monaco-editor-core',
  11. 'package.json'
  12. );
  13. async function prepareMonacoEditorReleaseStableOrNightly() {
  14. const monacoEditorPackageJson = JSON.parse(
  15. await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' })
  16. ) as PackageJson;
  17. let version: string;
  18. const arg = process.argv[2];
  19. if (arg === 'stable') {
  20. version = monacoEditorPackageJson.version;
  21. } else if (arg === 'nightly') {
  22. version = getNightlyVersion(monacoEditorPackageJson.version);
  23. } else {
  24. throw new Error('Invalid argument');
  25. }
  26. await prepareMonacoEditorRelease(version);
  27. // npm package is now in ./out/monaco-editor, ready to be published
  28. }
  29. async function prepareMonacoEditorRelease(monacoEditorCoreVersion: string) {
  30. await group('npm ci', async () => {
  31. await run('npm ci', { cwd: resolve(rootPath, 'webpack-plugin') });
  32. });
  33. await group('Set Version & Update monaco-editor-core Version', async () => {
  34. const packageJson = JSON.parse(
  35. await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' })
  36. ) as PackageJson;
  37. packageJson.version = monacoEditorCoreVersion;
  38. packageJson.devDependencies['monaco-editor-core'] = monacoEditorCoreVersion;
  39. await writeJsonFile(monacoEditorPackageJsonPath, packageJson);
  40. });
  41. await group('npm install to pick up monaco-editor-core', async () => {
  42. await run('npm install', { cwd: rootPath });
  43. });
  44. await group('Setting vscode commitId from monaco-editor-core', async () => {
  45. const monacoEditorCorePackageJson = JSON.parse(
  46. await readFile(monacoEditorCorePackageJsonPath, { encoding: 'utf-8' })
  47. ) as PackageJson;
  48. const packageJson = JSON.parse(
  49. await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' })
  50. ) as PackageJson;
  51. packageJson.vscodeCommitId = monacoEditorCorePackageJson.vscodeCommitId;
  52. packageJson.monacoCommitId = await gitCommitId(rootPath);
  53. await writeJsonFile(monacoEditorPackageJsonPath, packageJson);
  54. });
  55. await group('Building & Testing', async () => {
  56. await run(resolve(selfPath, './monaco-editor.sh'), { cwd: rootPath });
  57. });
  58. }
  59. prepareMonacoEditorReleaseStableOrNightly();