Skip to content

Commit 0eb2840

Browse files
authored
Merge pull request #276826 from microsoft/dev/mjbvz/gulp-mjs
Convert gulpfiles to modules
2 parents a2f3455 + 9388f8e commit 0eb2840

File tree

22 files changed

+274
-263
lines changed

22 files changed

+274
-263
lines changed

build/gulpfile.cli.js renamed to build/gulpfile.cli.mjs

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
'use strict';
7-
8-
const es = require('event-stream');
9-
const gulp = require('gulp');
10-
const path = require('path');
11-
const fancyLog = require('fancy-log');
12-
const ansiColors = require('ansi-colors');
13-
const cp = require('child_process');
14-
const { tmpdir } = require('os');
15-
const { existsSync, mkdirSync, rmSync } = require('fs');
16-
17-
const task = require('./lib/task');
18-
const watcher = require('./lib/watch');
19-
const { debounce } = require('./lib/util');
20-
const createReporter = require('./lib/reporter').createReporter;
6+
import es from 'event-stream';
7+
import gulp from 'gulp';
8+
import * as path from 'path';
9+
import fancyLog from 'fancy-log';
10+
import ansiColors from 'ansi-colors';
11+
import * as cp from 'child_process';
12+
import { tmpdir } from 'os';
13+
import { existsSync, mkdirSync, rmSync } from 'fs';
14+
import task from './lib/task.js';
15+
import watcher from './lib/watch/index.js';
16+
import utilModule from './lib/util.js';
17+
import reporterModule from './lib/reporter.js';
18+
import untar from 'gulp-untar';
19+
import gunzip from 'gulp-gunzip';
20+
import { fileURLToPath } from 'url';
21+
22+
const { debounce } = utilModule;
23+
const { createReporter } = reporterModule;
24+
const __dirname = import.meta.dirname
2125

2226
const root = 'cli';
2327
const rootAbs = path.resolve(__dirname, '..', root);
@@ -80,8 +84,6 @@ const compileFromSources = (callback) => {
8084
};
8185

8286
const acquireBuiltOpenSSL = (callback) => {
83-
const untar = require('gulp-untar');
84-
const gunzip = require('gulp-gunzip');
8587
const dir = path.join(tmpdir(), 'vscode-openssl-download');
8688
mkdirSync(dir, { recursive: true });
8789

build/gulpfile.compile.js renamed to build/gulpfile.compile.mjs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22
* Copyright (c) Microsoft Corporation. All rights reserved.
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
5-
65
//@ts-check
7-
'use strict';
8-
9-
const gulp = require('gulp');
10-
const util = require('./lib/util');
11-
const date = require('./lib/date');
12-
const task = require('./lib/task');
13-
const compilation = require('./lib/compilation');
6+
import gulp from 'gulp';
7+
import util from './lib/util.js';
8+
import date from './lib/date.js';
9+
import task from './lib/task.js';
10+
import compilation from './lib/compilation.js';
1411

1512
/**
1613
* @param {boolean} disableMangle
@@ -25,11 +22,9 @@ function makeCompileBuildTask(disableMangle) {
2522
}
2623

2724
// Local/PR compile, including nls and inline sources in sourcemaps, minification, no mangling
28-
const compileBuildWithoutManglingTask = task.define('compile-build-without-mangling', makeCompileBuildTask(true));
25+
export const compileBuildWithoutManglingTask = task.define('compile-build-without-mangling', makeCompileBuildTask(true));
2926
gulp.task(compileBuildWithoutManglingTask);
30-
exports.compileBuildWithoutManglingTask = compileBuildWithoutManglingTask;
3127

3228
// CI compile, including nls and inline sources in sourcemaps, mangling, minification, for build
33-
const compileBuildWithManglingTask = task.define('compile-build-with-mangling', makeCompileBuildTask(false));
29+
export const compileBuildWithManglingTask = task.define('compile-build-with-mangling', makeCompileBuildTask(false));
3430
gulp.task(compileBuildWithManglingTask);
35-
exports.compileBuildWithManglingTask = compileBuildWithManglingTask;

build/gulpfile.editor.js renamed to build/gulpfile.editor.mjs

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,30 @@
22
* Copyright (c) Microsoft Corporation. All rights reserved.
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
5-
65
//@ts-check
7-
8-
const gulp = require('gulp');
9-
const path = require('path');
10-
const util = require('./lib/util');
11-
const { getVersion } = require('./lib/getVersion');
12-
const task = require('./lib/task');
13-
const es = require('event-stream');
14-
const File = require('vinyl');
15-
const i18n = require('./lib/i18n');
16-
const standalone = require('./lib/standalone');
17-
const cp = require('child_process');
18-
const compilation = require('./lib/compilation');
19-
const monacoapi = require('./lib/monaco-api');
20-
const fs = require('fs');
21-
const filter = require('gulp-filter');
22-
6+
import gulp from 'gulp';
7+
import * as path from 'path';
8+
import util from './lib/util.js';
9+
import getVersionModule from './lib/getVersion.js';
10+
import task from './lib/task.js';
11+
import es from 'event-stream';
12+
import File from 'vinyl';
13+
import i18n from './lib/i18n.js';
14+
import standalone from './lib/standalone.js';
15+
import * as cp from 'child_process';
16+
import compilation from './lib/compilation.js';
17+
import monacoapi from './lib/monaco-api.js';
18+
import * as fs from 'fs';
19+
import filter from 'gulp-filter';
20+
import reporterModule from './lib/reporter.js';
21+
import monacoPackage from './monaco/package.json' with { type: 'json' };
22+
23+
const __dirname = import.meta.dirname
24+
const { getVersion } = getVersionModule;
25+
const { createReporter } = reporterModule;
2326
const root = path.dirname(__dirname);
2427
const sha1 = getVersion(root);
25-
const semver = require('./monaco/package.json').version;
28+
const semver = monacoPackage.version;
2629
const headerVersion = semver + '(' + sha1 + ')';
2730

2831
const BUNDLED_FILE_HEADER = [
@@ -233,8 +236,6 @@ gulp.task('monacodts', task.define('monacodts', () => {
233236
*/
234237
function createTscCompileTask(watch) {
235238
return () => {
236-
const createReporter = require('./lib/reporter').createReporter;
237-
238239
return new Promise((resolve, reject) => {
239240
const args = ['./node_modules/.bin/tsc', '-p', './src/tsconfig.monaco.json', '--noEmit'];
240241
if (watch) {
@@ -281,11 +282,9 @@ function createTscCompileTask(watch) {
281282
};
282283
}
283284

284-
const monacoTypecheckWatchTask = task.define('monaco-typecheck-watch', createTscCompileTask(true));
285-
exports.monacoTypecheckWatchTask = monacoTypecheckWatchTask;
285+
export const monacoTypecheckWatchTask = task.define('monaco-typecheck-watch', createTscCompileTask(true));
286286

287-
const monacoTypecheckTask = task.define('monaco-typecheck', createTscCompileTask(false));
288-
exports.monacoTypecheckTask = monacoTypecheckTask;
287+
export const monacoTypecheckTask = task.define('monaco-typecheck', createTscCompileTask(false));
289288

290289
//#endregion
291290

build/gulpfile.extensions.js renamed to build/gulpfile.extensions.mjs

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,31 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
// Increase max listeners for event emitters
7-
require('events').EventEmitter.defaultMaxListeners = 100;
8-
9-
const gulp = require('gulp');
10-
const path = require('path');
11-
const nodeUtil = require('util');
12-
const es = require('event-stream');
13-
const filter = require('gulp-filter');
14-
const util = require('./lib/util');
15-
const { getVersion } = require('./lib/getVersion');
16-
const task = require('./lib/task');
17-
const watcher = require('./lib/watch');
18-
const createReporter = require('./lib/reporter').createReporter;
19-
const glob = require('glob');
7+
import { EventEmitter } from 'events';
8+
EventEmitter.defaultMaxListeners = 100;
9+
10+
import gulp from 'gulp';
11+
import * as path from 'path';
12+
import * as nodeUtil from 'util';
13+
import es from 'event-stream';
14+
import filter from 'gulp-filter';
15+
import util from './lib/util.js';
16+
import getVersionModule from './lib/getVersion.js';
17+
import task from './lib/task.js';
18+
import watcher from './lib/watch/index.js';
19+
import reporterModule from './lib/reporter.js';
20+
import glob from 'glob';
21+
import plumber from 'gulp-plumber';
22+
import ext from './lib/extensions.js';
23+
import tsb from './lib/tsb/index.js';
24+
import sourcemaps from 'gulp-sourcemaps';
25+
import { fileURLToPath } from 'url';
26+
27+
const __dirname = import.meta.dirname
28+
const { getVersion } = getVersionModule;
29+
const { createReporter } = reporterModule;
2030
const root = path.dirname(__dirname);
2131
const commit = getVersion(root);
22-
const plumber = require('gulp-plumber');
23-
const ext = require('./lib/extensions');
2432

2533
// To save 250ms for each gulp startup, we are caching the result here
2634
// const compilations = glob.sync('**/tsconfig.json', {
@@ -92,9 +100,6 @@ const tasks = compilations.map(function (tsconfigFile) {
92100
const baseUrl = getBaseUrl(out);
93101

94102
function createPipeline(build, emitError, transpileOnly) {
95-
const tsb = require('./lib/tsb');
96-
const sourcemaps = require('gulp-sourcemaps');
97-
98103
const reporter = createReporter('extensions');
99104

100105
overrideOptions.inlineSources = Boolean(build);
@@ -191,30 +196,25 @@ const tasks = compilations.map(function (tsconfigFile) {
191196
const transpileExtensionsTask = task.define('transpile-extensions', task.parallel(...tasks.map(t => t.transpileTask)));
192197
gulp.task(transpileExtensionsTask);
193198

194-
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
199+
export const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
195200
gulp.task(compileExtensionsTask);
196-
exports.compileExtensionsTask = compileExtensionsTask;
197201

198-
const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tasks.map(t => t.watchTask)));
202+
export const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tasks.map(t => t.watchTask)));
199203
gulp.task(watchExtensionsTask);
200-
exports.watchExtensionsTask = watchExtensionsTask;
201204

202205
const compileExtensionsBuildLegacyTask = task.define('compile-extensions-build-legacy', task.parallel(...tasks.map(t => t.compileBuildTask)));
203206
gulp.task(compileExtensionsBuildLegacyTask);
204207

205208
//#region Extension media
206209

207-
const compileExtensionMediaTask = task.define('compile-extension-media', () => ext.buildExtensionMedia(false));
210+
export const compileExtensionMediaTask = task.define('compile-extension-media', () => ext.buildExtensionMedia(false));
208211
gulp.task(compileExtensionMediaTask);
209-
exports.compileExtensionMediaTask = compileExtensionMediaTask;
210212

211-
const watchExtensionMedia = task.define('watch-extension-media', () => ext.buildExtensionMedia(true));
213+
export const watchExtensionMedia = task.define('watch-extension-media', () => ext.buildExtensionMedia(true));
212214
gulp.task(watchExtensionMedia);
213-
exports.watchExtensionMedia = watchExtensionMedia;
214215

215-
const compileExtensionMediaBuildTask = task.define('compile-extension-media-build', () => ext.buildExtensionMedia(false, '.build/extensions'));
216+
export const compileExtensionMediaBuildTask = task.define('compile-extension-media-build', () => ext.buildExtensionMedia(false, '.build/extensions'));
216217
gulp.task(compileExtensionMediaBuildTask);
217-
exports.compileExtensionMediaBuildTask = compileExtensionMediaBuildTask;
218218

219219
//#endregion
220220

@@ -223,8 +223,7 @@ exports.compileExtensionMediaBuildTask = compileExtensionMediaBuildTask;
223223
/**
224224
* Cleans the build directory for extensions
225225
*/
226-
const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
227-
exports.cleanExtensionsBuildTask = cleanExtensionsBuildTask;
226+
export const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
228227

229228
/**
230229
* brings in the marketplace extensions for the build
@@ -235,32 +234,29 @@ const bundleMarketplaceExtensionsBuildTask = task.define('bundle-marketplace-ext
235234
* Compiles the non-native extensions for the build
236235
* @note this does not clean the directory ahead of it. See {@link cleanExtensionsBuildTask} for that.
237236
*/
238-
const compileNonNativeExtensionsBuildTask = task.define('compile-non-native-extensions-build', task.series(
237+
export const compileNonNativeExtensionsBuildTask = task.define('compile-non-native-extensions-build', task.series(
239238
bundleMarketplaceExtensionsBuildTask,
240239
task.define('bundle-non-native-extensions-build', () => ext.packageNonNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build')))
241240
));
242241
gulp.task(compileNonNativeExtensionsBuildTask);
243-
exports.compileNonNativeExtensionsBuildTask = compileNonNativeExtensionsBuildTask;
244242

245243
/**
246244
* Compiles the native extensions for the build
247245
* @note this does not clean the directory ahead of it. See {@link cleanExtensionsBuildTask} for that.
248246
*/
249-
const compileNativeExtensionsBuildTask = task.define('compile-native-extensions-build', () => ext.packageNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build')));
247+
export const compileNativeExtensionsBuildTask = task.define('compile-native-extensions-build', () => ext.packageNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build')));
250248
gulp.task(compileNativeExtensionsBuildTask);
251-
exports.compileNativeExtensionsBuildTask = compileNativeExtensionsBuildTask;
252249

253250
/**
254251
* Compiles the extensions for the build.
255252
* This is essentially a helper task that combines {@link cleanExtensionsBuildTask}, {@link compileNonNativeExtensionsBuildTask} and {@link compileNativeExtensionsBuildTask}
256253
*/
257-
const compileAllExtensionsBuildTask = task.define('compile-extensions-build', task.series(
254+
export const compileAllExtensionsBuildTask = task.define('compile-extensions-build', task.series(
258255
cleanExtensionsBuildTask,
259256
bundleMarketplaceExtensionsBuildTask,
260257
task.define('bundle-extensions-build', () => ext.packageAllLocalExtensionsStream(false, false).pipe(gulp.dest('.build'))),
261258
));
262259
gulp.task(compileAllExtensionsBuildTask);
263-
exports.compileAllExtensionsBuildTask = compileAllExtensionsBuildTask;
264260

265261
// This task is run in the compilation stage of the CI pipeline. We only compile the non-native extensions since those can be fully built regardless of platform.
266262
// This defers the native extensions to the platform specific stage of the CI pipeline.
@@ -278,13 +274,11 @@ gulp.task(task.define('extensions-ci-pr', task.series(compileExtensionsBuildPull
278274

279275
//#endregion
280276

281-
const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false));
277+
export const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false));
282278
gulp.task(compileWebExtensionsTask);
283-
exports.compileWebExtensionsTask = compileWebExtensionsTask;
284279

285-
const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true));
280+
export const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true));
286281
gulp.task(watchWebExtensionsTask);
287-
exports.watchWebExtensionsTask = watchWebExtensionsTask;
288282

289283
/**
290284
* @param {boolean} isWatch

build/gulpfile.js renamed to build/gulpfile.mjs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,23 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
'use strict';
6+
import { EventEmitter } from 'events';
7+
import glob from 'glob';
8+
import gulp from 'gulp';
9+
import { createRequire } from 'node:module';
10+
import { fileURLToPath } from 'url';
11+
import { monacoTypecheckTask /* , monacoTypecheckWatchTask */ } from './gulpfile.editor.mjs';
12+
import { compileExtensionMediaTask, compileExtensionsTask, watchExtensionsTask } from './gulpfile.extensions.mjs';
13+
import compilation from './lib/compilation.js';
14+
import task from './lib/task.js';
15+
import util from './lib/util.js';
716

8-
// Increase max listeners for event emitters
9-
require('events').EventEmitter.defaultMaxListeners = 100;
17+
EventEmitter.defaultMaxListeners = 100;
1018

11-
const gulp = require('gulp');
12-
const util = require('./lib/util');
13-
const task = require('./lib/task');
14-
const { transpileTask, compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = require('./lib/compilation');
15-
const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor');
16-
const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions');
19+
const require = createRequire(import.meta.url);
20+
const __dirname = import.meta.dirname
21+
22+
const { transpileTask, compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = compilation;
1723

1824
// API proposal names
1925
gulp.task(compileApiProposalNamesTask);
@@ -49,5 +55,5 @@ process.on('unhandledRejection', (reason, p) => {
4955
});
5056

5157
// Load all the gulpfiles only if running tasks other than the editor tasks
52-
require('glob').sync('gulpfile.*.{js,mjs}', { cwd: __dirname })
58+
glob.sync('gulpfile.*.{mjs,js}', { cwd: __dirname })
5359
.forEach(f => require(`./${f}`));

0 commit comments

Comments
 (0)