@@ -19,7 +19,7 @@ const cmdLineOptions = require("./scripts/build/options");
19
19
const copyright = "CopyrightNotice.txt" ;
20
20
const cleanTasks = [ ] ;
21
21
22
- const testRunner = "./built/local/testRunner/runner .js" ;
22
+ const testRunner = "./built/local/testRunner.js" ;
23
23
24
24
const buildScripts = ( ) => buildProject ( "scripts" ) ;
25
25
task ( "scripts" , buildScripts ) ;
@@ -57,9 +57,7 @@ const diagnosticInformationMapTs = "src/compiler/diagnosticInformationMap.genera
57
57
const diagnosticMessagesJson = "src/compiler/diagnosticMessages.json" ;
58
58
const diagnosticMessagesGeneratedJson = "src/compiler/diagnosticMessages.generated.json" ;
59
59
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 ] ) ;
63
61
} ;
64
62
task ( "generate-diagnostics" , series ( buildScripts , generateDiagnostics ) ) ;
65
63
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
89
87
. concat ( generatedLCGFile ) ;
90
88
91
89
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 } ) ;
95
91
} ;
96
92
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
+ } ;
98
120
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 ) ;
100
148
101
149
const apiExtractor = async ( ) => {
102
150
async function runApiExtractor ( configPath ) {
@@ -114,17 +162,20 @@ const apiExtractor = async () => {
114
162
await runApiExtractor ( "./src/tsserverlibrary/api-extractor.json" ) ;
115
163
} ;
116
164
117
- task ( "api-extractor" , series ( task ( "moduleBuild" ) , apiExtractor ) ) ;
165
+ task ( "api-extractor" , series ( buildSrc , apiExtractor ) ) ;
118
166
119
167
const buildDebugTools = ( ) => buildProject ( "src/debug" ) ;
120
168
const cleanDebugTools = ( ) => cleanProject ( "src/debug" ) ;
121
169
cleanTasks . push ( cleanDebugTools ) ;
122
170
123
171
// 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 */ ) ) ;
125
173
126
174
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
128
179
task ( "tsc" ) . description = "Builds the command-line compiler" ;
129
180
130
181
const cleanTsc = ( ) => cleanProject ( "src/tsc" ) ;
@@ -244,7 +295,11 @@ task("dynamicImportCompat", buildDynamicImportCompat);
244
295
const buildServerMain = ( ) => buildProject ( "src/tsserver" , cmdLineOptions ) ;
245
296
const buildServer = series ( buildDynamicImportCompat , buildServerMain ) ;
246
297
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
248
303
task ( "tsserver" ) . description = "Builds the language server" ;
249
304
task ( "tsserver" ) . flags = {
250
305
" --built" : "Compile using the built version of the compiler."
@@ -461,7 +516,7 @@ const preTest = parallel(buildTsc, buildTests, buildServices, buildLssl);
461
516
preTest . displayName = "preTest" ;
462
517
463
518
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
465
520
task ( "runtests" ) . description = "Runs the tests using the built run.js file." ;
466
521
task ( "runtests" ) . flags = {
467
522
"-t --tests=<regex>" : "Pattern for tests to run." ,
@@ -480,7 +535,7 @@ task("runtests").flags = {
480
535
} ;
481
536
482
537
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
484
539
task ( "runtests-parallel" ) . description = "Runs all the tests in parallel using the built run.js file." ;
485
540
task ( "runtests-parallel" ) . flags = {
486
541
" --light" : "Run tests in light mode (fewer verifications, but tests run faster)." ,
0 commit comments