bundle.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. const requirejs = require('requirejs');
  6. const path = require('path');
  7. const fs = require('fs');
  8. const terser = require('terser');
  9. const { getBundledFileHeader } = require('../../build/utils');
  10. const REPO_ROOT = path.resolve(__dirname, '..', '..');
  11. const BUNDLED_FILE_HEADER = getBundledFileHeader();
  12. bundleOne('monaco.contribution');
  13. bundleOne('jsonMode', ['vs/language/json/monaco.contribution']);
  14. bundleOne('jsonWorker');
  15. function bundleOne(moduleId, exclude) {
  16. requirejs.optimize(
  17. {
  18. baseUrl: 'out/amd/',
  19. name: 'vs/language/json/' + moduleId,
  20. out: 'release/dev/' + moduleId + '.js',
  21. exclude: exclude,
  22. paths: {
  23. 'vs/language/json': REPO_ROOT + '/monaco-json/out/amd',
  24. 'vs/language/json/fillers/monaco-editor-core':
  25. REPO_ROOT + '/monaco-json/out/amd/fillers/monaco-editor-core-amd'
  26. },
  27. optimize: 'none',
  28. packages: [
  29. {
  30. name: 'vscode-json-languageservice',
  31. location: path.join(REPO_ROOT, 'node_modules/vscode-json-languageservice/lib/umd'),
  32. main: 'jsonLanguageService'
  33. },
  34. {
  35. name: 'vscode-languageserver-types',
  36. location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-types/lib/umd'),
  37. main: 'main'
  38. },
  39. {
  40. name: 'vscode-languageserver-textdocument',
  41. location: path.join(REPO_ROOT, 'node_modules/vscode-languageserver-textdocument/lib/umd'),
  42. main: 'main'
  43. },
  44. {
  45. name: 'jsonc-parser',
  46. location: path.join(REPO_ROOT, 'node_modules/jsonc-parser/lib/umd'),
  47. main: 'main'
  48. },
  49. {
  50. name: 'vscode-uri',
  51. location: path.join(REPO_ROOT, 'node_modules/vscode-uri/lib/umd'),
  52. main: 'index'
  53. },
  54. {
  55. name: 'vscode-nls',
  56. location: path.join(REPO_ROOT, 'monaco-json/out/amd/fillers'),
  57. main: 'vscode-nls'
  58. }
  59. ]
  60. },
  61. async function (buildResponse) {
  62. const devFilePath = path.join(REPO_ROOT, 'monaco-json/release/dev/' + moduleId + '.js');
  63. const minFilePath = path.join(REPO_ROOT, 'monaco-json/release/min/' + moduleId + '.js');
  64. const fileContents = fs.readFileSync(devFilePath).toString();
  65. console.log();
  66. console.log(`Minifying ${devFilePath}...`);
  67. const result = await terser.minify(fileContents, {
  68. output: {
  69. comments: 'some'
  70. }
  71. });
  72. console.log(`Done minifying ${devFilePath}.`);
  73. try {
  74. fs.mkdirSync(path.join(REPO_ROOT, 'monaco-json/release/min'));
  75. } catch (err) {}
  76. fs.writeFileSync(minFilePath, BUNDLED_FILE_HEADER + result.code);
  77. }
  78. );
  79. }