Babel
First install Babelify and the Babel preset for ES2015. Like Uglify, Babelify mangles code, so we’ll need vinyl-buffer and gulp-sourcemaps. By default Babelify will only process files with extensions of .js
, .es
, .es6
and .jsx
so we need to add the .ts
extension as an option to Babelify.
npm install --save-dev babelify babel-preset-es2015 vinyl-buffer gulp-sourcemaps
Now change your gulpfile to the following:
var gulp = require('gulp'); var browserify = require('browserify'); var source = require('vinyl-source-stream'); var tsify = require('tsify'); var sourcemaps = require('gulp-sourcemaps'); var buffer = require('vinyl-buffer'); var paths = { pages: ['src/*.html'] }; gulp.task('copyHtml', function () { return gulp.src(paths.pages) .pipe(gulp.dest('dist')); }); gulp.task('default', ['copyHtml'], function () { return browserify({ basedir: '.', debug: true, entries: ['src/main.ts'], cache: {}, packageCache: {} }) .plugin(tsify) .transform('babelify', { presets: ['es2015'], extensions: ['.ts'] }) .bundle() .pipe(source('bundle.js')) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('dist')); });
We also need to have TypeScript target ES2015. Babel will then produce ES5 from the ES2015 code that TypeScript emits. Let’s modify tsconfig.json
:
{ "files": [ "src/main.ts" ], "compilerOptions": { "noImplicitAny": true, "target": "es2015" } }
Babel’s ES5 output should be very similar to TypeScript’s output for such a simple script.
Please login to continue.