Convert gulpfiles to modules

Makes a pass through our top level gulpfiles to convert them to modules
This commit is contained in:
Matt Bierner
2025-11-11 15:28:50 -08:00
parent c6464f84b9
commit 723aa849c9
22 changed files with 267 additions and 252 deletions

View File

@@ -3,21 +3,25 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import es from 'event-stream';
import gulp from 'gulp';
import * as path from 'path';
import fancyLog from 'fancy-log';
import ansiColors from 'ansi-colors';
import * as cp from 'child_process';
import { tmpdir } from 'os';
import { existsSync, mkdirSync, rmSync } from 'fs';
import task from './lib/task.js';
import watcher from './lib/watch/index.js';
import utilModule from './lib/util.js';
import reporterModule from './lib/reporter.js';
import untar from 'gulp-untar';
import gunzip from 'gulp-gunzip';
import { fileURLToPath } from 'url';
const es = require('event-stream');
const gulp = require('gulp');
const path = require('path');
const fancyLog = require('fancy-log');
const ansiColors = require('ansi-colors');
const cp = require('child_process');
const { tmpdir } = require('os');
const { existsSync, mkdirSync, rmSync } = require('fs');
const task = require('./lib/task');
const watcher = require('./lib/watch');
const { debounce } = require('./lib/util');
const createReporter = require('./lib/reporter').createReporter;
const { debounce } = utilModule;
const { createReporter } = reporterModule;
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const root = 'cli';
const rootAbs = path.resolve(__dirname, '..', root);
@@ -80,8 +84,6 @@ const compileFromSources = (callback) => {
};
const acquireBuiltOpenSSL = (callback) => {
const untar = require('gulp-untar');
const gunzip = require('gulp-gunzip');
const dir = path.join(tmpdir(), 'vscode-openssl-download');
mkdirSync(dir, { recursive: true });

View File

@@ -4,13 +4,12 @@
*--------------------------------------------------------------------------------------------*/
//@ts-check
'use strict';
const gulp = require('gulp');
const util = require('./lib/util');
const date = require('./lib/date');
const task = require('./lib/task');
const compilation = require('./lib/compilation');
import gulp from 'gulp';
import util from './lib/util.js';
import date from './lib/date.js';
import task from './lib/task.js';
import compilation from './lib/compilation.js';
/**
* @param {boolean} disableMangle
@@ -25,11 +24,9 @@ function makeCompileBuildTask(disableMangle) {
}
// Local/PR compile, including nls and inline sources in sourcemaps, minification, no mangling
const compileBuildWithoutManglingTask = task.define('compile-build-without-mangling', makeCompileBuildTask(true));
export const compileBuildWithoutManglingTask = task.define('compile-build-without-mangling', makeCompileBuildTask(true));
gulp.task(compileBuildWithoutManglingTask);
exports.compileBuildWithoutManglingTask = compileBuildWithoutManglingTask;
// CI compile, including nls and inline sources in sourcemaps, mangling, minification, for build
const compileBuildWithManglingTask = task.define('compile-build-with-mangling', makeCompileBuildTask(false));
export const compileBuildWithManglingTask = task.define('compile-build-with-mangling', makeCompileBuildTask(false));
gulp.task(compileBuildWithManglingTask);
exports.compileBuildWithManglingTask = compileBuildWithManglingTask;

View File

@@ -5,24 +5,30 @@
//@ts-check
const gulp = require('gulp');
const path = require('path');
const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const es = require('event-stream');
const File = require('vinyl');
const i18n = require('./lib/i18n');
const standalone = require('./lib/standalone');
const cp = require('child_process');
const compilation = require('./lib/compilation');
const monacoapi = require('./lib/monaco-api');
const fs = require('fs');
const filter = require('gulp-filter');
import gulp from 'gulp';
import * as path from 'path';
import util from './lib/util.js';
import getVersionModule from './lib/getVersion.js';
import task from './lib/task.js';
import es from 'event-stream';
import File from 'vinyl';
import i18n from './lib/i18n.js';
import standalone from './lib/standalone.js';
import * as cp from 'child_process';
import compilation from './lib/compilation.js';
import monacoapi from './lib/monaco-api.js';
import * as fs from 'fs';
import filter from 'gulp-filter';
import reporterModule from './lib/reporter.js';
import { fileURLToPath } from 'url';
import monacoPackage from './monaco/package.json' with { type: 'json' };
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const { getVersion } = getVersionModule;
const { createReporter } = reporterModule;
const root = path.dirname(__dirname);
const sha1 = getVersion(root);
const semver = require('./monaco/package.json').version;
const semver = monacoPackage.version;
const headerVersion = semver + '(' + sha1 + ')';
const BUNDLED_FILE_HEADER = [
@@ -233,8 +239,6 @@ gulp.task('monacodts', task.define('monacodts', () => {
*/
function createTscCompileTask(watch) {
return () => {
const createReporter = require('./lib/reporter').createReporter;
return new Promise((resolve, reject) => {
const args = ['./node_modules/.bin/tsc', '-p', './src/tsconfig.monaco.json', '--noEmit'];
if (watch) {
@@ -281,11 +285,9 @@ function createTscCompileTask(watch) {
};
}
const monacoTypecheckWatchTask = task.define('monaco-typecheck-watch', createTscCompileTask(true));
exports.monacoTypecheckWatchTask = monacoTypecheckWatchTask;
export const monacoTypecheckWatchTask = task.define('monaco-typecheck-watch', createTscCompileTask(true));
const monacoTypecheckTask = task.define('monaco-typecheck', createTscCompileTask(false));
exports.monacoTypecheckTask = monacoTypecheckTask;
export const monacoTypecheckTask = task.define('monaco-typecheck', createTscCompileTask(false));
//#endregion

View File

@@ -3,24 +3,31 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// Increase max listeners for event emitters
require('events').EventEmitter.defaultMaxListeners = 100;
import { EventEmitter } from 'events';
import gulp from 'gulp';
import * as path from 'path';
import * as nodeUtil from 'util';
import es from 'event-stream';
import filter from 'gulp-filter';
import util from './lib/util.js';
import getVersionModule from './lib/getVersion.js';
import task from './lib/task.js';
import watcher from './lib/watch/index.js';
import reporterModule from './lib/reporter.js';
import glob from 'glob';
import plumber from 'gulp-plumber';
import ext from './lib/extensions.js';
import tsb from './lib/tsb/index.js';
import sourcemaps from 'gulp-sourcemaps';
import { fileURLToPath } from 'url';
const gulp = require('gulp');
const path = require('path');
const nodeUtil = require('util');
const es = require('event-stream');
const filter = require('gulp-filter');
const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const watcher = require('./lib/watch');
const createReporter = require('./lib/reporter').createReporter;
const glob = require('glob');
EventEmitter.defaultMaxListeners = 100;
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const { getVersion } = getVersionModule;
const { createReporter } = reporterModule;
const root = path.dirname(__dirname);
const commit = getVersion(root);
const plumber = require('gulp-plumber');
const ext = require('./lib/extensions');
// To save 250ms for each gulp startup, we are caching the result here
// const compilations = glob.sync('**/tsconfig.json', {
@@ -92,9 +99,6 @@ const tasks = compilations.map(function (tsconfigFile) {
const baseUrl = getBaseUrl(out);
function createPipeline(build, emitError, transpileOnly) {
const tsb = require('./lib/tsb');
const sourcemaps = require('gulp-sourcemaps');
const reporter = createReporter('extensions');
overrideOptions.inlineSources = Boolean(build);
@@ -191,30 +195,25 @@ const tasks = compilations.map(function (tsconfigFile) {
const transpileExtensionsTask = task.define('transpile-extensions', task.parallel(...tasks.map(t => t.transpileTask)));
gulp.task(transpileExtensionsTask);
const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
export const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
gulp.task(compileExtensionsTask);
exports.compileExtensionsTask = compileExtensionsTask;
const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tasks.map(t => t.watchTask)));
export const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tasks.map(t => t.watchTask)));
gulp.task(watchExtensionsTask);
exports.watchExtensionsTask = watchExtensionsTask;
const compileExtensionsBuildLegacyTask = task.define('compile-extensions-build-legacy', task.parallel(...tasks.map(t => t.compileBuildTask)));
gulp.task(compileExtensionsBuildLegacyTask);
//#region Extension media
const compileExtensionMediaTask = task.define('compile-extension-media', () => ext.buildExtensionMedia(false));
export const compileExtensionMediaTask = task.define('compile-extension-media', () => ext.buildExtensionMedia(false));
gulp.task(compileExtensionMediaTask);
exports.compileExtensionMediaTask = compileExtensionMediaTask;
const watchExtensionMedia = task.define('watch-extension-media', () => ext.buildExtensionMedia(true));
export const watchExtensionMedia = task.define('watch-extension-media', () => ext.buildExtensionMedia(true));
gulp.task(watchExtensionMedia);
exports.watchExtensionMedia = watchExtensionMedia;
const compileExtensionMediaBuildTask = task.define('compile-extension-media-build', () => ext.buildExtensionMedia(false, '.build/extensions'));
export const compileExtensionMediaBuildTask = task.define('compile-extension-media-build', () => ext.buildExtensionMedia(false, '.build/extensions'));
gulp.task(compileExtensionMediaBuildTask);
exports.compileExtensionMediaBuildTask = compileExtensionMediaBuildTask;
//#endregion
@@ -223,8 +222,7 @@ exports.compileExtensionMediaBuildTask = compileExtensionMediaBuildTask;
/**
* Cleans the build directory for extensions
*/
const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
exports.cleanExtensionsBuildTask = cleanExtensionsBuildTask;
export const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
/**
* brings in the marketplace extensions for the build
@@ -235,32 +233,29 @@ const bundleMarketplaceExtensionsBuildTask = task.define('bundle-marketplace-ext
* Compiles the non-native extensions for the build
* @note this does not clean the directory ahead of it. See {@link cleanExtensionsBuildTask} for that.
*/
const compileNonNativeExtensionsBuildTask = task.define('compile-non-native-extensions-build', task.series(
export const compileNonNativeExtensionsBuildTask = task.define('compile-non-native-extensions-build', task.series(
bundleMarketplaceExtensionsBuildTask,
task.define('bundle-non-native-extensions-build', () => ext.packageNonNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build')))
));
gulp.task(compileNonNativeExtensionsBuildTask);
exports.compileNonNativeExtensionsBuildTask = compileNonNativeExtensionsBuildTask;
/**
* Compiles the native extensions for the build
* @note this does not clean the directory ahead of it. See {@link cleanExtensionsBuildTask} for that.
*/
const compileNativeExtensionsBuildTask = task.define('compile-native-extensions-build', () => ext.packageNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build')));
export const compileNativeExtensionsBuildTask = task.define('compile-native-extensions-build', () => ext.packageNativeLocalExtensionsStream(false, false).pipe(gulp.dest('.build')));
gulp.task(compileNativeExtensionsBuildTask);
exports.compileNativeExtensionsBuildTask = compileNativeExtensionsBuildTask;
/**
* Compiles the extensions for the build.
* This is essentially a helper task that combines {@link cleanExtensionsBuildTask}, {@link compileNonNativeExtensionsBuildTask} and {@link compileNativeExtensionsBuildTask}
*/
const compileAllExtensionsBuildTask = task.define('compile-extensions-build', task.series(
export const compileAllExtensionsBuildTask = task.define('compile-extensions-build', task.series(
cleanExtensionsBuildTask,
bundleMarketplaceExtensionsBuildTask,
task.define('bundle-extensions-build', () => ext.packageAllLocalExtensionsStream(false, false).pipe(gulp.dest('.build'))),
));
gulp.task(compileAllExtensionsBuildTask);
exports.compileAllExtensionsBuildTask = compileAllExtensionsBuildTask;
// 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.
// This defers the native extensions to the platform specific stage of the CI pipeline.
@@ -278,13 +273,11 @@ gulp.task(task.define('extensions-ci-pr', task.series(compileExtensionsBuildPull
//#endregion
const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false));
export const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false));
gulp.task(compileWebExtensionsTask);
exports.compileWebExtensionsTask = compileWebExtensionsTask;
const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true));
export const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true));
gulp.task(watchWebExtensionsTask);
exports.watchWebExtensionsTask = watchWebExtensionsTask;
/**
* @param {boolean} isWatch

View File

@@ -3,17 +3,23 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import { EventEmitter } from 'events';
import glob from 'glob';
import gulp from 'gulp';
import { createRequire } from 'node:module';
import { fileURLToPath } from 'url';
import { monacoTypecheckTask /* , monacoTypecheckWatchTask */ } from './gulpfile.editor.mjs';
import { compileExtensionMediaTask, compileExtensionsTask, watchExtensionsTask } from './gulpfile.extensions.mjs';
import compilation from './lib/compilation.js';
import task from './lib/task.js';
import util from './lib/util.js';
// Increase max listeners for event emitters
require('events').EventEmitter.defaultMaxListeners = 100;
EventEmitter.defaultMaxListeners = 100;
const gulp = require('gulp');
const util = require('./lib/util');
const task = require('./lib/task');
const { transpileTask, compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = require('./lib/compilation');
const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor');
const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions');
const require = createRequire(import.meta.url);
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const { transpileTask, compileTask, watchTask, compileApiProposalNamesTask, watchApiProposalNamesTask } = compilation;
// API proposal names
gulp.task(compileApiProposalNamesTask);
@@ -49,5 +55,5 @@ process.on('unhandledRejection', (reason, p) => {
});
// Load all the gulpfiles only if running tasks other than the editor tasks
require('glob').sync('gulpfile.*.{js,mjs}', { cwd: __dirname })
.forEach(f => require(`./${f}`));
glob.sync('gulpfile.*.{mjs,js}', { cwd: __dirname })
.map(f => require(`./${f}`));

View File

@@ -3,35 +3,44 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import gulp from 'gulp';
import * as path from 'path';
import es from 'event-stream';
import * as util from './lib/util.js';
import * as getVersionModule from './lib/getVersion.js';
import * as task from './lib/task.js';
import optimize from './lib/optimize.js';
import * as inlineMetaModule from './lib/inlineMeta.js';
import product from '../product.json' with { type: 'json' };
import rename from 'gulp-rename';
import replace from 'gulp-replace';
import filter from 'gulp-filter';
import * as dependenciesModule from './lib/dependencies.js';
import * as dateModule from './lib/date.js';
import vfs from 'vinyl-fs';
import packageJson from '../package.json' with { type: 'json' };
import flatmap from 'gulp-flatmap';
import gunzip from 'gulp-gunzip';
import untar from 'gulp-untar';
import File from 'vinyl';
import * as fs from 'fs';
import glob from 'glob';
import { compileBuildWithManglingTask } from './gulpfile.compile.mjs';
import { cleanExtensionsBuildTask, compileNonNativeExtensionsBuildTask, compileNativeExtensionsBuildTask, compileExtensionMediaBuildTask } from './gulpfile.extensions.mjs';
import { vscodeWebResourceIncludes, createVSCodeWebFileContentMapper } from './gulpfile.vscode.web.mjs';
import * as cp from 'child_process';
import log from 'fancy-log';
import buildfile from './buildfile.js';
import { fileURLToPath } from 'url';
import * as fetchModule from './lib/fetch.js';
import jsonEditor from 'gulp-json-editor';
const gulp = require('gulp');
const path = require('path');
const es = require('event-stream');
const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const optimize = require('./lib/optimize');
const { inlineMeta } = require('./lib/inlineMeta');
const product = require('../product.json');
const rename = require('gulp-rename');
const replace = require('gulp-replace');
const filter = require('gulp-filter');
const { getProductionDependencies } = require('./lib/dependencies');
const { readISODate } = require('./lib/date');
const vfs = require('vinyl-fs');
const packageJson = require('../package.json');
const flatmap = require('gulp-flatmap');
const gunzip = require('gulp-gunzip');
const File = require('vinyl');
const fs = require('fs');
const glob = require('glob');
const { compileBuildWithManglingTask } = require('./gulpfile.compile');
const { cleanExtensionsBuildTask, compileNonNativeExtensionsBuildTask, compileNativeExtensionsBuildTask, compileExtensionMediaBuildTask } = require('./gulpfile.extensions');
const { vscodeWebResourceIncludes, createVSCodeWebFileContentMapper } = require('./gulpfile.vscode.web');
const cp = require('child_process');
const log = require('fancy-log');
const buildfile = require('./buildfile');
const { inlineMeta } = inlineMetaModule;
const { getVersion } = getVersionModule;
const { getProductionDependencies } = dependenciesModule;
const { readISODate } = dateModule;
const { fetchUrls, fetchGithub } = fetchModule;
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const REPO_ROOT = path.dirname(__dirname);
const commit = getVersion(REPO_ROOT);
@@ -185,8 +194,6 @@ if (defaultNodeTask) {
}
function nodejs(platform, arch) {
const { fetchUrls, fetchGithub } = require('./lib/fetch');
const untar = require('gulp-untar');
if (arch === 'armhf') {
arch = 'armv7l';
@@ -253,8 +260,6 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
const destination = path.join(BUILD_ROOT, destinationFolderName);
return () => {
const json = require('gulp-json-editor');
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }))
.pipe(util.setExecutableBit(['**/*.sh']))
@@ -312,7 +317,7 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
let packageJsonContents;
const packageJsonStream = gulp.src(['remote/package.json'], { base: 'remote' })
.pipe(json({ name, version, dependencies: undefined, optionalDependencies: undefined, type: 'module' }))
.pipe(jsonEditor({ name, version, dependencies: undefined, optionalDependencies: undefined, type: 'module' }))
.pipe(es.through(function (file) {
packageJsonContents = file.contents.toString();
this.emit('data', file);
@@ -320,7 +325,7 @@ function packageTask(type, platform, arch, sourceFolderName, destinationFolderNa
let productJsonContents;
const productJsonStream = gulp.src(['product.json'], { base: '.' })
.pipe(json({ commit, date: readISODate('out-build'), version }))
.pipe(jsonEditor({ commit, date: readISODate('out-build'), version }))
.pipe(es.through(function (file) {
productJsonContents = file.contents.toString();
this.emit('data', file);

View File

@@ -3,18 +3,20 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import gulp from 'gulp';
import * as path from 'path';
import task from './lib/task.js';
import util from './lib/util.js';
import electron from '@vscode/gulp-electron';
import electronConfigModule from './lib/electron.js';
import filter from 'gulp-filter';
import deps from './lib/dependencies.js';
import { existsSync, readdirSync } from 'fs';
import { fileURLToPath } from 'url';
const gulp = require('gulp');
const path = require('path');
const task = require('./lib/task');
const util = require('./lib/util');
const electron = require('@vscode/gulp-electron');
const { config } = require('./lib/electron');
const filter = require('gulp-filter');
const deps = require('./lib/dependencies');
const { existsSync, readdirSync } = require('fs');
const { config } = electronConfigModule;
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const root = path.dirname(__dirname);
const BUILD_TARGETS = [

View File

@@ -3,25 +3,28 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import gulp from 'gulp';
import replace from 'gulp-replace';
import rename from 'gulp-rename';
import es from 'event-stream';
import vfs from 'vinyl-fs';
import * as utilModule from './lib/util.js';
import * as getVersionModule from './lib/getVersion.js';
import * as task from './lib/task.js';
import packageJson from '../package.json' with { type: 'json' };
import product from '../product.json' with { type: 'json' };
import { getDependencies } from './linux/dependencies-generator.js';
import * as depLists from './linux/debian/dep-lists.js';
import * as path from 'path';
import * as cp from 'child_process';
import { promisify } from 'util';
import { fileURLToPath } from 'url';
const gulp = require('gulp');
const replace = require('gulp-replace');
const rename = require('gulp-rename');
const es = require('event-stream');
const vfs = require('vinyl-fs');
const { rimraf } = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const packageJson = require('../package.json');
const product = require('../product.json');
const dependenciesGenerator = require('./linux/dependencies-generator');
const debianRecommendedDependencies = require('./linux/debian/dep-lists').recommendedDeps;
const path = require('path');
const cp = require('child_process');
const util = require('util');
const exec = util.promisify(cp.exec);
const { rimraf } = utilModule;
const { getVersion } = getVersionModule;
const { recommendedDeps: debianRecommendedDependencies } = depLists;
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const exec = promisify(cp.exec);
const root = path.dirname(__dirname);
const commit = getVersion(root);
@@ -40,7 +43,7 @@ function prepareDebPackage(arch) {
const destination = '.build/linux/deb/' + debArch + '/' + product.applicationName + '-' + debArch;
return async function () {
const dependencies = await dependenciesGenerator.getDependencies('deb', binaryDir, product.applicationName, debArch);
const dependencies = await getDependencies('deb', binaryDir, product.applicationName, debArch);
const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
.pipe(rename('usr/share/applications/' + product.applicationName + '.desktop'));
@@ -157,7 +160,7 @@ function prepareRpmPackage(arch) {
const stripBinary = process.env['STRIP'] ?? '/usr/bin/strip';
return async function () {
const dependencies = await dependenciesGenerator.getDependencies('rpm', binaryDir, product.applicationName, rpmArch);
const dependencies = await getDependencies('rpm', binaryDir, product.applicationName, rpmArch);
const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
.pipe(rename('BUILD/usr/share/applications/' + product.applicationName + '.desktop'));

View File

@@ -3,38 +3,49 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import gulp from 'gulp';
import * as fs from 'fs';
import * as path from 'path';
import es from 'event-stream';
import vfs from 'vinyl-fs';
import rename from 'gulp-rename';
import replace from 'gulp-replace';
import filter from 'gulp-filter';
import electron from '@vscode/gulp-electron';
import jsonEditor from 'gulp-json-editor';
import * as util from './lib/util.js';
import * as getVersionModule from './lib/getVersion.js';
import * as dateModule from './lib/date.js';
import * as task from './lib/task.js';
import buildfile from './buildfile.js';
import optimize from './lib/optimize.js';
import * as inlineMetaModule from './lib/inlineMeta.js';
import packageJson from '../package.json' with { type: 'json' };
import product from '../product.json' with { type: 'json' };
import * as crypto from 'crypto';
import i18n from './lib/i18n.js';
import * as dependenciesModule from './lib/dependencies.js';
import electronModule from './lib/electron.js';
import asarModule from './lib/asar.js';
import minimist from 'minimist';
import { compileBuildWithoutManglingTask, compileBuildWithManglingTask } from './gulpfile.compile.mjs';
import { compileNonNativeExtensionsBuildTask, compileNativeExtensionsBuildTask, compileAllExtensionsBuildTask, compileExtensionMediaBuildTask, cleanExtensionsBuildTask } from './gulpfile.extensions.mjs';
import { promisify } from 'util';
import globCallback from 'glob';
import rceditCallback from 'rcedit';
import { fileURLToPath } from 'url';
const gulp = require('gulp');
const fs = require('fs');
const path = require('path');
const es = require('event-stream');
const vfs = require('vinyl-fs');
const rename = require('gulp-rename');
const replace = require('gulp-replace');
const filter = require('gulp-filter');
const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const { readISODate } = require('./lib/date');
const task = require('./lib/task');
const buildfile = require('./buildfile');
const optimize = require('./lib/optimize');
const { inlineMeta } = require('./lib/inlineMeta');
const { getVersion } = getVersionModule;
const { readISODate } = dateModule;
const { inlineMeta } = inlineMetaModule;
const { getProductionDependencies } = dependenciesModule;
const { config } = electronModule;
const { createAsar } = asarModule;
const glob = promisify(globCallback);
const rcedit = promisify(rceditCallback);
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const root = path.dirname(__dirname);
const commit = getVersion(root);
const packageJson = require('../package.json');
const product = require('../product.json');
const crypto = require('crypto');
const i18n = require('./lib/i18n');
const { getProductionDependencies } = require('./lib/dependencies');
const { config } = require('./lib/electron');
const createAsar = require('./lib/asar').createAsar;
const minimist = require('minimist');
const { compileBuildWithoutManglingTask, compileBuildWithManglingTask } = require('./gulpfile.compile');
const { compileNonNativeExtensionsBuildTask, compileNativeExtensionsBuildTask, compileAllExtensionsBuildTask, compileExtensionMediaBuildTask, cleanExtensionsBuildTask } = require('./gulpfile.extensions');
const { promisify } = require('util');
const glob = promisify(require('glob'));
const rcedit = promisify(require('rcedit'));
// Build
const vscodeEntryPoints = [
@@ -214,9 +225,6 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
platform = platform || process.platform;
const task = () => {
const electron = require('@vscode/gulp-electron');
const json = require('gulp-json-editor');
const out = sourceFolderName;
const checksums = computeChecksums(out, [
@@ -262,7 +270,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
let packageJsonContents;
const packageJsonStream = gulp.src(['package.json'], { base: '.' })
.pipe(json(packageJsonUpdates))
.pipe(jsonEditor(packageJsonUpdates))
.pipe(es.through(function (file) {
packageJsonContents = file.contents.toString();
this.emit('data', file);
@@ -270,7 +278,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
let productJsonContents;
const productJsonStream = gulp.src(['product.json'], { base: '.' })
.pipe(json({ commit, date: readISODate('out-build'), checksums, version }))
.pipe(jsonEditor({ commit, date: readISODate('out-build'), checksums, version }))
.pipe(es.through(function (file) {
productJsonContents = file.contents.toString();
this.emit('data', file);

View File

@@ -3,25 +3,31 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import gulp from 'gulp';
import * as path from 'path';
import es from 'event-stream';
import * as util from './lib/util.js';
import * as getVersionModule from './lib/getVersion.js';
import * as task from './lib/task.js';
import optimize from './lib/optimize.js';
import * as dateModule from './lib/date.js';
import product from '../product.json' with { type: 'json' };
import rename from 'gulp-rename';
import filter from 'gulp-filter';
import * as dependenciesModule from './lib/dependencies.js';
import vfs from 'vinyl-fs';
import packageJson from '../package.json' with { type: 'json' };
import { compileBuildWithManglingTask } from './gulpfile.compile.mjs';
import extensions from './lib/extensions.js';
import VinylFile from 'vinyl';
import jsonEditor from 'gulp-json-editor';
import buildfile from './buildfile.js';
import { fileURLToPath } from 'url';
const gulp = require('gulp');
const path = require('path');
const es = require('event-stream');
const util = require('./lib/util');
const { getVersion } = require('./lib/getVersion');
const task = require('./lib/task');
const optimize = require('./lib/optimize');
const { readISODate } = require('./lib/date');
const product = require('../product.json');
const rename = require('gulp-rename');
const filter = require('gulp-filter');
const { getProductionDependencies } = require('./lib/dependencies');
const vfs = require('vinyl-fs');
const packageJson = require('../package.json');
const { compileBuildWithManglingTask } = require('./gulpfile.compile');
const extensions = require('./lib/extensions');
const VinylFile = require('vinyl');
const { getVersion } = getVersionModule;
const { readISODate } = dateModule;
const { getProductionDependencies } = dependenciesModule;
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const REPO_ROOT = path.dirname(__dirname);
const BUILD_ROOT = path.dirname(REPO_ROOT);
@@ -31,7 +37,7 @@ const commit = getVersion(REPO_ROOT);
const quality = product.quality;
const version = (quality && quality !== 'stable') ? `${packageJson.version}-${quality}` : packageJson.version;
const vscodeWebResourceIncludes = [
export const vscodeWebResourceIncludes = [
// NLS
'out-build/nls.messages.js',
@@ -58,7 +64,6 @@ const vscodeWebResourceIncludes = [
// Extension Host Worker
'out-build/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html'
];
exports.vscodeWebResourceIncludes = vscodeWebResourceIncludes;
const vscodeWebResources = [
@@ -73,8 +78,6 @@ const vscodeWebResources = [
'!**/test/**'
];
const buildfile = require('./buildfile');
const vscodeWebEntryPoints = [
buildfile.workerEditor,
buildfile.workerExtensionHost,
@@ -92,7 +95,7 @@ const vscodeWebEntryPoints = [
* @param extensionsRoot {string} The location where extension will be read from
* @param {object} product The parsed product.json file contents
*/
const createVSCodeWebFileContentMapper = (extensionsRoot, product) => {
export const createVSCodeWebFileContentMapper = (extensionsRoot, product) => {
/**
* @param {string} path
* @returns {((content: string) => string) | undefined}
@@ -118,7 +121,6 @@ const createVSCodeWebFileContentMapper = (extensionsRoot, product) => {
return undefined;
};
};
exports.createVSCodeWebFileContentMapper = createVSCodeWebFileContentMapper;
const bundleVSCodeWebTask = task.define('bundle-vscode-web', task.series(
util.rimraf('out-vscode-web'),
@@ -150,8 +152,6 @@ function packageTask(sourceFolderName, destinationFolderName) {
const destination = path.join(BUILD_ROOT, destinationFolderName);
return () => {
const json = require('gulp-json-editor');
const src = gulp.src(sourceFolderName + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }));
@@ -175,7 +175,7 @@ function packageTask(sourceFolderName, destinationFolderName) {
const name = product.nameShort;
const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' })
.pipe(json({ name, version, type: 'module' }));
.pipe(jsonEditor({ name, version, type: 'module' }));
const license = gulp.src(['remote/LICENSE'], { base: 'remote', allowEmpty: true });

View File

@@ -2,25 +2,26 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
const gulp = require('gulp');
const path = require('path');
const fs = require('fs');
const assert = require('assert');
const cp = require('child_process');
const util = require('./lib/util');
const task = require('./lib/task');
const pkg = require('../package.json');
const product = require('../product.json');
const vfs = require('vinyl-fs');
const rcedit = require('rcedit');
import gulp from 'gulp';
import * as path from 'path';
import * as fs from 'fs';
import assert from 'assert';
import * as cp from 'child_process';
import * as util from './lib/util.js';
import * as task from './lib/task.js';
import pkg from '../package.json' with { type: 'json' };
import product from '../product.json' with { type: 'json' };
import vfs from 'vinyl-fs';
import rcedit from 'rcedit';
import { createRequire } from 'module';
import { fileURLToPath } from 'url';
const __dirname = fileURLToPath(new URL('.', import.meta.url));
const repoPath = path.dirname(__dirname);
const buildPath = (/** @type {string} */ arch) => path.join(path.dirname(repoPath), `VSCode-win32-${arch}`);
const setupDir = (/** @type {string} */ arch, /** @type {string} */ target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`);
const issPath = path.join(__dirname, 'win32', 'code.iss');
const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup'))), 'bin', 'ISCC.exe');
const innoSetupPath = path.join(path.dirname(path.dirname(import.meta.resolve('innosetup'))), 'bin', 'ISCC.exe');
const signWin32Path = path.join(repoPath, 'build', 'azure-pipelines', 'common', 'sign-win32');
function packageInnoSetup(iss, options, cb) {

View File

@@ -759,7 +759,7 @@
"compile": "gulp compile-extension:markdown-language-features-languageService && gulp compile-extension:markdown-language-features && npm run build-preview && npm run build-notebook",
"watch": "npm run build-preview && gulp watch-extension:markdown-language-features watch-extension:markdown-language-features-languageService",
"vscode:prepublish": "npm run build-ext && npm run build-preview",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:markdown-language-features ./tsconfig.json",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:markdown-language-features ./tsconfig.json",
"build-notebook": "node ./esbuild-notebook.mjs",
"build-preview": "node ./esbuild-preview.mjs",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",

View File

@@ -155,7 +155,7 @@
"compile": "gulp compile-extension:media-preview",
"watch": "npm run build-preview && gulp watch-extension:media-preview",
"vscode:prepublish": "npm run build-ext",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:media-preview ./tsconfig.json",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:media-preview ./tsconfig.json",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose"
},

View File

@@ -73,7 +73,7 @@
"compile": "gulp compile-extension:mermaid-chat-features && npm run build-chat-webview",
"watch": "npm run build-chat-webview && gulp watch-extension:mermaid-chat-features",
"vscode:prepublish": "npm run build-ext && npm run build-chat-webview",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:mermaid-chat-features",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:mermaid-chat-features",
"build-chat-webview": "node ./esbuild-chat-webview.mjs",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose"

View File

@@ -16,7 +16,7 @@
],
"scripts": {
"generate-grammar": "node ./syntaxes/generateTMLanguage.js",
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:search-result ./tsconfig.json"
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:search-result ./tsconfig.json"
},
"capabilities": {
"virtualWorkspaces": true,

View File

@@ -60,7 +60,7 @@
"compile": "gulp compile-extension:simple-browser && npm run build-preview",
"watch": "npm run build-preview && gulp watch-extension:simple-browser",
"vscode:prepublish": "npm run build-ext && npm run build-preview",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:simple-browser ./tsconfig.json",
"build-ext": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:simple-browser ./tsconfig.json",
"build-preview": "node ./esbuild-preview.mjs",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch --info-verbosity verbose"

View File

@@ -53,7 +53,7 @@
"@types/semver": "^5.5.0"
},
"scripts": {
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:typescript-language-features",
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:typescript-language-features",
"compile-web": "npx webpack-cli --config extension-browser.webpack.config --mode none",
"watch-web": "npx webpack-cli --config extension-browser.webpack.config --mode none --watch"
},

View File

@@ -268,7 +268,7 @@
},
"scripts": {
"compile": "node ./node_modules/vscode/bin/compile -watch -p ./",
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:vscode-api-tests ./tsconfig.json"
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:vscode-api-tests ./tsconfig.json"
},
"devDependencies": {
"@types/mocha": "^10.0.10",

View File

@@ -14,7 +14,7 @@
},
"icon": "media/icon.png",
"scripts": {
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:vscode-colorize-perf-tests ./tsconfig.json",
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:vscode-colorize-perf-tests ./tsconfig.json",
"watch": "gulp watch-extension:vscode-colorize-perf-tests",
"compile": "gulp compile-extension:vscode-colorize-perf-tests"
},

View File

@@ -14,7 +14,7 @@
},
"icon": "media/icon.png",
"scripts": {
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:vscode-colorize-tests ./tsconfig.json",
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:vscode-colorize-tests ./tsconfig.json",
"watch": "gulp watch-extension:vscode-colorize-tests",
"compile": "gulp compile-extension:vscode-colorize-tests"
},

View File

@@ -18,7 +18,7 @@
],
"scripts": {
"compile": "node ./node_modules/vscode/bin/compile -watch -p ./",
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.js compile-extension:vscode-test-resolver"
"vscode:prepublish": "node ../../node_modules/gulp/bin/gulp.js --gulpfile ../../build/gulpfile.extensions.mjs compile-extension:vscode-test-resolver"
},
"activationEvents": [
"onResolveRemoteAuthority:test",

View File

@@ -2,8 +2,4 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
require('./build/gulpfile');
import './build/gulpfile.mjs';