Skip to content

Commit a3ca90b

Browse files
committed
Hack something together to test various builds
1 parent a973b50 commit a3ca90b

File tree

11 files changed

+660
-38
lines changed

11 files changed

+660
-38
lines changed

Gulpfile.js

+70-15
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const cmdLineOptions = require("./scripts/build/options");
1919
const copyright = "CopyrightNotice.txt";
2020
const cleanTasks = [];
2121

22-
const testRunner = "./built/local/testRunner/runner.js";
22+
const testRunner = "./built/local/testRunner.js";
2323

2424
const buildScripts = () => buildProject("scripts");
2525
task("scripts", buildScripts);
@@ -57,9 +57,7 @@ const diagnosticInformationMapTs = "src/compiler/diagnosticInformationMap.genera
5757
const diagnosticMessagesJson = "src/compiler/diagnosticMessages.json";
5858
const diagnosticMessagesGeneratedJson = "src/compiler/diagnosticMessages.generated.json";
5959
const generateDiagnostics = async () => {
60-
if (needsUpdate(diagnosticMessagesJson, [diagnosticMessagesGeneratedJson, diagnosticInformationMapTs])) {
61-
await exec(process.execPath, ["scripts/processDiagnosticMessages.js", diagnosticMessagesJson]);
62-
}
60+
await exec(process.execPath, ["scripts/processDiagnosticMessages.js", diagnosticMessagesJson]);
6361
};
6462
task("generate-diagnostics", series(buildScripts, generateDiagnostics));
6563
task("generate-diagnostics").description = "Generates a diagnostic file in TypeScript based on an input JSON file";
@@ -89,14 +87,64 @@ const localizationTargets = ["cs", "de", "es", "fr", "it", "ja", "ko", "pl", "pt
8987
.concat(generatedLCGFile);
9088

9189
const localize = async () => {
92-
if (needsUpdate(diagnosticMessagesGeneratedJson, generatedLCGFile)) {
93-
return exec(process.execPath, ["scripts/generateLocalizedDiagnosticMessages.js", "src/loc/lcl", "built/local", diagnosticMessagesGeneratedJson], { ignoreExitCode: true });
94-
}
90+
return exec(process.execPath, ["scripts/generateLocalizedDiagnosticMessages.js", "src/loc/lcl", "built/local", diagnosticMessagesGeneratedJson], { ignoreExitCode: true });
9591
};
9692

97-
const buildAll = () => buildProject("src");
93+
/**
94+
* @param {string} entrypoint
95+
* @param {string} outfile
96+
*/
97+
async function esbuild(entrypoint, outfile) {
98+
await exec("node_modules/esbuild/bin/esbuild", [
99+
entrypoint,
100+
"--bundle",
101+
`--outfile=${outfile}`,
102+
"--platform=node",
103+
"--target=node10", // Node 10; oldest benchmarker.
104+
"--sourcemap",
105+
"--external:./node_modules/*",
106+
"--conditions=require",
107+
// "--supported:const-and-let=false", // Unfortunately, no: https://github.com/evanw/esbuild/issues/297
108+
"--supported:object-rest-spread=false", // See: https://github.com/evanw/esbuild/releases/tag/v0.14.46
109+
]);
110+
}
111+
112+
const buildSrc = () => buildProject("src");
113+
114+
const writeHackyCJSShim = (infile, outfile) => {
115+
return (done) => {
116+
fs.writeFileSync(outfile, `module.exports = require("${infile}")`);
117+
done();
118+
};
119+
};
98120

99-
task("moduleBuild", parallel(generateLibs, series(buildScripts, localize, buildAll)));
121+
const preBundleFromSrc = parallel(generateLibs, series(buildScripts, generateDiagnostics, localize));
122+
const preBuildSrc = preBundleFromSrc;
123+
const preBundleFromEmit = series(preBundleFromSrc, buildSrc);
124+
125+
const bundleTscFromEmit = () => esbuild("./built/local/tsc/tsc.js", "./built/local/tsc.js");
126+
const bundleTypescriptFromEmit = () => esbuild("./built/local/typescript/typescript.js", "./built/local/typescript.js");
127+
const bundleServerFromEmit = () => esbuild("./built/local/tsserver/server.js", "./built/local/tsserver.js");
128+
const bundleServerLibraryFromEmit = () => esbuild("./built/local/tsserverlibrary/tsserverlibrary.js", "./built/local/tsserverlibrary.js");
129+
const bundleTestsFromEmit = () => esbuild("./built/local/testRunner/_namespaces/Harness.js", testRunner);
130+
131+
const bundleTscFromSrc = () => esbuild("./src/tsc/tsc.ts", "./built/local/tsc.js");
132+
const bundleTypescriptFromSrc = () => esbuild("./src/typescript/typescript.ts", "./built/local/typescript.js");
133+
const bundleServerFromSrc = () => esbuild("./src/tsserver/server.ts", "./built/local/tsserver.js");
134+
const bundleServerLibraryFromSrc = () => esbuild("./src/tsserverlibrary/tsserverlibrary.ts", "./built/local/tsserverlibrary.js");
135+
const bundleTestsFromSrc = () => esbuild("./src/testRunner/_namespaces/Harness.ts", testRunner);
136+
137+
const bundleAllFromSrc = series([
138+
bundleTscFromSrc,
139+
bundleTypescriptFromSrc,
140+
bundleServerFromSrc,
141+
bundleServerLibraryFromSrc,
142+
bundleTestsFromSrc,
143+
]);
144+
task("bundle-src", series(preBundleFromSrc, bundleAllFromSrc));
145+
146+
147+
task("buildSrc", preBundleFromEmit);
100148

101149
const apiExtractor = async () => {
102150
async function runApiExtractor(configPath) {
@@ -114,17 +162,20 @@ const apiExtractor = async () => {
114162
await runApiExtractor("./src/tsserverlibrary/api-extractor.json");
115163
};
116164

117-
task("api-extractor", series(task("moduleBuild"), apiExtractor));
165+
task("api-extractor", series(buildSrc, apiExtractor));
118166

119167
const buildDebugTools = () => buildProject("src/debug");
120168
const cleanDebugTools = () => cleanProject("src/debug");
121169
cleanTasks.push(cleanDebugTools);
122170

123171
// Pre-build steps when targeting the LKG compiler
124-
const lkgPreBuild = parallel(generateLibs, series(buildScripts, generateDiagnostics, buildDebugTools));
172+
const lkgPreBuild = parallel(generateLibs, series(buildScripts, generateDiagnostics /** , buildDebugTools */));
125173

126174
const buildTsc = () => buildProject("src/tsc");
127-
task("tsc", series(lkgPreBuild, buildTsc));
175+
176+
// task("tsc", series(preBundleFromSrc, bundleTscFromSrc)); // esbuild on ./src
177+
// task("tsc", series(preBundleFromEmit, bundleTscFromEmit)); // esbuild on emitted ./built/local
178+
task("tsc", series(preBuildSrc, buildSrc, writeHackyCJSShim("./built/local/tsc/tsc.js", "./built/local/tsc.js"))); // CJS
128179
task("tsc").description = "Builds the command-line compiler";
129180

130181
const cleanTsc = () => cleanProject("src/tsc");
@@ -244,7 +295,11 @@ task("dynamicImportCompat", buildDynamicImportCompat);
244295
const buildServerMain = () => buildProject("src/tsserver", cmdLineOptions);
245296
const buildServer = series(buildDynamicImportCompat, buildServerMain);
246297
buildServer.displayName = "buildServer";
247-
task("tsserver", series(preBuild, buildServer));
298+
299+
// task("tsserver", series(preBundleFromSrc, bundleServerFromSrc)); // esbuild on ./src
300+
// task("tsserver", series(preBundleFromEmit, bundleServerFromEmit)); // esbuild on emitted ./built/local
301+
302+
task("tsserver", series(preBuildSrc, buildSrc, writeHackyCJSShim("./built/local/tsserver/server.js", "./built/local/tsserver.js"))); // CJS
248303
task("tsserver").description = "Builds the language server";
249304
task("tsserver").flags = {
250305
" --built": "Compile using the built version of the compiler."
@@ -461,7 +516,7 @@ const preTest = parallel(buildTsc, buildTests, buildServices, buildLssl);
461516
preTest.displayName = "preTest";
462517

463518
const runTests = () => runConsoleTests(testRunner, "mocha-fivemat-progress-reporter", /*runInParallel*/ false, /*watchMode*/ false);
464-
task("runtests", series(/*preBuild, preTest,*/ task("moduleBuild"), runTests)); // TODO(jakebailey): fix this for modules
519+
task("runtests", series(/*preBuild, preTest,*/ preBundleFromSrc, bundleTestsFromSrc, runTests)); // TODO(jakebailey): fix this for modules
465520
task("runtests").description = "Runs the tests using the built run.js file.";
466521
task("runtests").flags = {
467522
"-t --tests=<regex>": "Pattern for tests to run.",
@@ -480,7 +535,7 @@ task("runtests").flags = {
480535
};
481536

482537
const runTestsParallel = () => runConsoleTests(testRunner, "min", /*runInParallel*/ cmdLineOptions.workers > 1, /*watchMode*/ false);
483-
task("runtests-parallel", series(/*preBuild, preTest,*/ task("moduleBuild"), runTestsParallel)); // TODO(jakebailey): fix this for modules
538+
task("runtests-parallel", series(/*preBuild, preTest,*/ preBundleFromSrc, bundleTestsFromSrc, runTestsParallel)); // TODO(jakebailey): fix this for modules
484539
task("runtests-parallel").description = "Runs all the tests in parallel using the built run.js file.";
485540
task("runtests-parallel").flags = {
486541
" --light": "Run tests in light mode (fewer verifications, but tests run faster).",

0 commit comments

Comments
 (0)