mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-12-12 03:20:56 -06:00
Lazypipes and better services stream management
This commit is contained in:
parent
b103857b23
commit
d7970a5ff3
70
Gulpfile.ts
70
Gulpfile.ts
@ -32,6 +32,7 @@ import browserify = require("browserify");
|
||||
import through2 = require("through2");
|
||||
import merge2 = require("merge2");
|
||||
import intoStream = require("into-stream");
|
||||
import lazypipe = require("lazypipe");
|
||||
import * as os from "os";
|
||||
import Linter = require("tslint");
|
||||
const gulp = helpMaker(originalGulp);
|
||||
@ -434,55 +435,50 @@ const nodePackageFile = path.join(builtLocalDirectory, "typescript.js");
|
||||
const nodeDefinitionsFile = path.join(builtLocalDirectory, "typescript.d.ts");
|
||||
const nodeStandaloneDefinitionsFile = path.join(builtLocalDirectory, "typescript_standalone.d.ts");
|
||||
|
||||
const prependCopyright = lazypipe()
|
||||
.pipe(() => insert.prepend(fs.readFileSync(copyright)));
|
||||
|
||||
gulp.task(builtLocalCompiler, false, [servicesFile], () => {
|
||||
const localCompilerProject = tsc.createProject("src/compiler/tsconfig.json", getCompilerSettings({}, /*useBuiltCompiler*/true));
|
||||
return localCompilerProject.src()
|
||||
.pipe(newer(builtLocalCompiler))
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(tsc(localCompilerProject))
|
||||
.pipe(gIf(useDebugMode, insert.prepend(fs.readFileSync(copyright))))
|
||||
.pipe(gIf(useDebugMode, prependCopyright()))
|
||||
.pipe(sourcemaps.write("."))
|
||||
.pipe(gulp.dest(builtLocalDirectory));
|
||||
});
|
||||
|
||||
gulp.task(servicesFile, false, ["lib", "generate-diagnostics"], (done) => {
|
||||
gulp.task(servicesFile, false, ["lib", "generate-diagnostics"], () => {
|
||||
const servicesProject = tsc.createProject("src/services/tsconfig.json", getCompilerSettings({}, /*useBuiltCompiler*/false));
|
||||
const {js, dts} = servicesProject.src()
|
||||
.pipe(newer(servicesFile))
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(tsc(servicesProject));
|
||||
js.pipe(gIf(useDebugMode, insert.prepend(fs.readFileSync(copyright))))
|
||||
.pipe(sourcemaps.write("."))
|
||||
.pipe(gulp.dest(builtLocalDirectory))
|
||||
.on("end", () => {
|
||||
gulp.src(servicesFile).pipe(insert.transform((content, file) => (file.path = nodePackageFile, content))).pipe(gulp.dest(builtLocalDirectory)).on("end", () => {
|
||||
// Stanalone/web definition file using global 'ts' namespace
|
||||
const defs = dts.pipe(insert.prepend(fs.readFileSync(copyright))).pipe(insert.transform((contents, file) => {
|
||||
file.path = standaloneDefinitionsFile;
|
||||
return contents.replace(/^(\s*)(export )?const enum (\S+) {(\s*)$/gm, "$1$2enum $3 {$4");
|
||||
}));
|
||||
|
||||
// Official node package definition file, pointed to by 'typings' in package.json
|
||||
// Created by appending 'export = ts;' at the end of the standalone file to turn it into an external module
|
||||
const nodeDefs = defs.pipe(clone()).pipe(insert.transform((content, file) => {
|
||||
file.path = nodeDefinitionsFile;
|
||||
return content + "\r\nexport = ts;";
|
||||
}));
|
||||
|
||||
// Node package definition file to be distributed without the package. Created by replacing
|
||||
// 'ts' namespace with '"typescript"' as a module.
|
||||
const nodeStandaloneDefs = defs.pipe(clone()).pipe(insert.transform((content, file) => {
|
||||
file.path = nodeStandaloneDefinitionsFile;
|
||||
return content.replace(/declare (namespace|module) ts/g, 'declare module "typescript"');
|
||||
}));
|
||||
|
||||
merge2([defs, nodeDefs, nodeStandaloneDefs]).pipe(gulp.dest(builtLocalDirectory))
|
||||
.on("end", () => done())
|
||||
.on("error", (err) => console.error(err));
|
||||
})
|
||||
.on("error", (err) => console.error(err));
|
||||
})
|
||||
.on("error", (err) => console.error(err));
|
||||
const completedJs = js.pipe(gIf(useDebugMode, prependCopyright()))
|
||||
.pipe(sourcemaps.write("."));
|
||||
const completedDts = dts.pipe(prependCopyright())
|
||||
.pipe(insert.transform((contents, file) => {
|
||||
file.path = standaloneDefinitionsFile;
|
||||
return contents.replace(/^(\s*)(export )?const enum (\S+) {(\s*)$/gm, "$1$2enum $3 {$4");
|
||||
}));
|
||||
return merge2([
|
||||
completedJs,
|
||||
completedJs.pipe(clone())
|
||||
.pipe(insert.transform((content, file) => (file.path = nodePackageFile, content))),
|
||||
completedDts,
|
||||
completedDts.pipe(clone())
|
||||
.pipe(insert.transform((content, file) => {
|
||||
file.path = nodeDefinitionsFile;
|
||||
return content + "\r\nexport = ts;";
|
||||
}))
|
||||
.pipe(gulp.dest(builtLocalDirectory)),
|
||||
completedDts.pipe(clone())
|
||||
.pipe(insert.transform((content, file) => {
|
||||
file.path = nodeStandaloneDefinitionsFile;
|
||||
return content.replace(/declare (namespace|module) ts/g, 'declare module "typescript"');
|
||||
}))
|
||||
]).pipe(gulp.dest(builtLocalDirectory));
|
||||
});
|
||||
|
||||
const serverFile = path.join(builtLocalDirectory, "tsserver.js");
|
||||
@ -493,7 +489,7 @@ gulp.task(serverFile, false, [servicesFile], () => {
|
||||
.pipe(newer(serverFile))
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(tsc(serverProject))
|
||||
.pipe(gIf(useDebugMode, insert.prepend(fs.readFileSync(copyright))))
|
||||
.pipe(gIf(useDebugMode, prependCopyright()))
|
||||
.pipe(sourcemaps.write("."))
|
||||
.pipe(gulp.dest(builtLocalDirectory));
|
||||
});
|
||||
@ -512,10 +508,10 @@ gulp.task(tsserverLibraryFile, false, [servicesFile], (done) => {
|
||||
.pipe(tsc(settings));
|
||||
|
||||
return merge2([
|
||||
js.pipe(gIf(useDebugMode, insert.prepend(fs.readFileSync(copyright))))
|
||||
js.pipe(gIf(useDebugMode, prependCopyright()))
|
||||
.pipe(sourcemaps.write("."))
|
||||
.pipe(gulp.dest(".")),
|
||||
dts.pipe(gIf(useDebugMode, insert.prepend(fs.readFileSync(copyright))))
|
||||
dts.pipe(gIf(useDebugMode, prependCopyright()))
|
||||
.pipe(gulp.dest("."))
|
||||
]);
|
||||
});
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
"@types/gulp-newer": "latest",
|
||||
"@types/gulp-sourcemaps": "latest",
|
||||
"@types/gulp-typescript": "latest",
|
||||
"@types/lazypipe": "latest",
|
||||
"@types/merge2": "latest",
|
||||
"@types/minimatch": "latest",
|
||||
"@types/minimist": "latest",
|
||||
@ -62,6 +63,7 @@
|
||||
"into-stream": "latest",
|
||||
"istanbul": "latest",
|
||||
"jake": "latest",
|
||||
"lazypipe": "latest",
|
||||
"merge2": "latest",
|
||||
"minimist": "latest",
|
||||
"mkdirp": "latest",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user