Skip to content

Commit

Permalink
Merge pull request #160274 from microsoft/joh/swc-lib
Browse files Browse the repository at this point in the history
joh/swc lib
  • Loading branch information
jrieken committed Sep 7, 2022
2 parents d3a33a2 + d6f5727 commit 7eeef6d
Show file tree
Hide file tree
Showing 12 changed files with 319 additions and 339 deletions.
2 changes: 1 addition & 1 deletion build/gulpfile.extensions.js
Expand Up @@ -110,7 +110,7 @@ const tasks = compilations.map(function (tsconfigFile) {
overrideOptions.inlineSources = Boolean(build);
overrideOptions.base = path.dirname(absolutePath);

const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false, transpileOnly, transpileOnlyIncludesDts: transpileOnly }, err => reporter(err.toString()));
const compilation = tsb.create(absolutePath, overrideOptions, { verbose: false, transpileOnly, transpileOnlyIncludesDts: transpileOnly, transpileWithSwc: true }, err => reporter(err.toString()));

const pipeline = function () {
const input = es.through();
Expand Down
2 changes: 1 addition & 1 deletion build/gulpfile.js
Expand Up @@ -20,7 +20,7 @@ gulp.task(compileApiProposalNamesTask);
gulp.task(watchApiProposalNamesTask);

// SWC Client Transpile
const transpileClientSWCTask = task.define('transpile-client-swc', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), transpileClientSWC('src', 'out')));
const transpileClientSWCTask = task.define('transpile-client-swc', task.series(util.rimraf('out'), util.buildWebNodePaths('out'), transpileTask('src', 'out', true)));
gulp.task(transpileClientSWCTask);

// Transpile only
Expand Down
33 changes: 8 additions & 25 deletions build/lib/compilation.js
Expand Up @@ -4,7 +4,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = exports.transpileTask = exports.transpileClientSWC = void 0;
exports.watchApiProposalNamesTask = exports.compileApiProposalNamesTask = exports.watchTask = exports.compileTask = exports.transpileTask = void 0;
const es = require("event-stream");
const fs = require("fs");
const gulp = require("gulp");
Expand All @@ -18,28 +18,7 @@ const ansiColors = require("ansi-colors");
const os = require("os");
const File = require("vinyl");
const task = require("./task");
const swc_1 = require("./swc");
const watch = require('./watch');
// --- SWC: transpile -------------------------------------
function transpileClientSWC(src, out) {
return function () {
// run SWC sync and put files straight onto the disk
const swcPromise = (0, swc_1.createSwcClientStream)().exec();
// copy none TS resources, like CSS, images, onto the disk
const bom = require('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
const tsFilter = util.filter(data => !/\.ts$/.test(data.path));
const srcStream = gulp.src(`${src}/**`, { base: `${src}` });
const copyStream = srcStream
.pipe(utf8Filter)
.pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
.pipe(utf8Filter.restore)
.pipe(tsFilter);
const copyPromise = util.streamToPromise(copyStream.pipe(gulp.dest(out)));
return Promise.all([swcPromise, copyPromise]);
};
}
exports.transpileClientSWC = transpileClientSWC;
// --- gulp-tsb: compile and transpile --------------------------------
const reporter = (0, reporter_1.createReporter)();
function getTypeScriptCompilerOptions(src) {
Expand All @@ -64,7 +43,11 @@ function createCompile(src, build, emitError, transpileOnly) {
if (!build) {
overrideOptions.inlineSourceMap = true;
}
const compilation = tsb.create(projectPath, overrideOptions, { verbose: false, transpileOnly }, err => reporter(err));
const compilation = tsb.create(projectPath, overrideOptions, {
verbose: false,
transpileOnly: Boolean(transpileOnly),
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.swc
}, err => reporter(err));
function pipeline(token) {
const bom = require('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
Expand Down Expand Up @@ -95,9 +78,9 @@ function createCompile(src, build, emitError, transpileOnly) {
};
return pipeline;
}
function transpileTask(src, out) {
function transpileTask(src, out, swc) {
return function () {
const transpile = createCompile(src, false, true, true);
const transpile = createCompile(src, false, true, { swc });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
return srcPipe
.pipe(transpile())
Expand Down
41 changes: 8 additions & 33 deletions build/lib/compilation.ts
Expand Up @@ -17,38 +17,9 @@ import * as os from 'os';
import ts = require('typescript');
import * as File from 'vinyl';
import * as task from './task';
import { createSwcClientStream } from './swc';
const watch = require('./watch');


// --- SWC: transpile -------------------------------------

export function transpileClientSWC(src: string, out: string) {

return function () {

// run SWC sync and put files straight onto the disk
const swcPromise = createSwcClientStream().exec();

// copy none TS resources, like CSS, images, onto the disk
const bom = require('gulp-bom') as typeof import('gulp-bom');
const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
const tsFilter = util.filter(data => !/\.ts$/.test(data.path));
const srcStream = gulp.src(`${src}/**`, { base: `${src}` });

const copyStream = srcStream
.pipe(utf8Filter)
.pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
.pipe(utf8Filter.restore)
.pipe(tsFilter);

const copyPromise = util.streamToPromise(copyStream.pipe(gulp.dest(out)));

return Promise.all([swcPromise, copyPromise]);
};

}

// --- gulp-tsb: compile and transpile --------------------------------

const reporter = createReporter();
Expand All @@ -68,7 +39,7 @@ function getTypeScriptCompilerOptions(src: string): ts.CompilerOptions {
return options;
}

function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean) {
function createCompile(src: string, build: boolean, emitError: boolean, transpileOnly: boolean | { swc: boolean }) {
const tsb = require('./tsb') as typeof import('./tsb');
const sourcemaps = require('gulp-sourcemaps') as typeof import('gulp-sourcemaps');

Expand All @@ -79,7 +50,11 @@ function createCompile(src: string, build: boolean, emitError: boolean, transpil
overrideOptions.inlineSourceMap = true;
}

const compilation = tsb.create(projectPath, overrideOptions, { verbose: false, transpileOnly }, err => reporter(err));
const compilation = tsb.create(projectPath, overrideOptions, {
verbose: false,
transpileOnly: Boolean(transpileOnly),
transpileWithSwc: typeof transpileOnly !== 'boolean' && transpileOnly.swc
}, err => reporter(err));

function pipeline(token?: util.ICancellationToken) {
const bom = require('gulp-bom') as typeof import('gulp-bom');
Expand Down Expand Up @@ -115,11 +90,11 @@ function createCompile(src: string, build: boolean, emitError: boolean, transpil
return pipeline;
}

export function transpileTask(src: string, out: string): () => NodeJS.ReadWriteStream {
export function transpileTask(src: string, out: string, swc: boolean): () => NodeJS.ReadWriteStream {

return function () {

const transpile = createCompile(src, false, true, true);
const transpile = createCompile(src, false, true, { swc });
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });

return srcPipe
Expand Down
22 changes: 0 additions & 22 deletions build/lib/swc/.swcrc-amd

This file was deleted.

22 changes: 0 additions & 22 deletions build/lib/swc/.swcrc-no-mod

This file was deleted.

74 changes: 0 additions & 74 deletions build/lib/swc/index.js

This file was deleted.

80 changes: 0 additions & 80 deletions build/lib/swc/index.ts

This file was deleted.

4 changes: 3 additions & 1 deletion build/lib/tsb/index.js
Expand Up @@ -92,7 +92,9 @@ function create(projectPath, existingOptions, config, onError = _defaultOnError)
}
let result;
if (config.transpileOnly) {
const transpiler = new transpiler_1.Transpiler(logFn, printDiagnostic, projectPath, cmdLine);
const transpiler = !config.transpileWithSwc
? new transpiler_1.TscTranspiler(logFn, printDiagnostic, projectPath, cmdLine)
: new transpiler_1.SwcTranspiler(logFn, printDiagnostic, projectPath, cmdLine);
result = (() => createTranspileStream(transpiler));
}
else {
Expand Down

0 comments on commit 7eeef6d

Please sign in to comment.