monaco-editor-prepare.ts 2.5 KB

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