Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
FROM node:6.9
MAINTAINER Paris Kasidiaris <[email protected]>

# Install cpio, used for building
RUN apt-get update \
&& apt-get install -y --no-install-recommends cpio \
&& rm -rf /var/lib/apt/lists/*

# Set the working directory
WORKDIR /usr/src/app

Expand Down
36 changes: 0 additions & 36 deletions bin/build

This file was deleted.

2 changes: 1 addition & 1 deletion bin/prepare-release
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ CURRENT_BOWER_JSON_VERSION=$(cat bower.json \

# Build xterm.js into `dist`
export BUILD_DIR=dist
./bin/build
npm run build

# Update AUTHORS file
sh bin/generate-authors
Expand Down
87 changes: 87 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
const browserify = require('browserify');
const buffer = require('vinyl-buffer');
const fs = require('fs-extra');
const gulp = require('gulp');
const merge = require('merge-stream');
const sorcery = require('sorcery');
const source = require('vinyl-source-stream');
const sourcemaps = require('gulp-sourcemaps');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sourcemaps don't appear to be working on the demo.

image

sorcery was being used because the browserify version needs to resolve dist/xterm.js -> lib/xterm.js > src/xterm.js.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I'll take a look. gulp-sourcemaps was supposed to do this when using loadMaps.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this could be fixed before this was merged that would be great as I use dev tools pretty heavily for xterm.js dev.

const ts = require('gulp-typescript');
const tsify = require('tsify');


let buildDir = process.env.BUILD_DIR || 'build';


/**
* Compile TypeScript sources to JavaScript files and create a source map file for each TypeScript
* file compiled.
*/
gulp.task('tsc', function () {
// Remove the lib/ directory to prevent confusion if files were deleted in src/
fs.emptyDirSync('lib');

// Build all TypeScript files (including tests) to lib/, based on the configuration defined in
// `tsconfig.json`.
let tsProject = ts.createProject('tsconfig.json');
let tsResult = tsProject.src().pipe(sourcemaps.init()).pipe(tsProject());
let tsc = tsResult.js.pipe(sourcemaps.write('.', {includeContent: false, sourceRoot: ''})).pipe(gulp.dest('lib'));

// Copy all addons from src/ to lib/
let copyAddons = gulp.src('src/addons/**/*').pipe(gulp.dest('lib/addons'));

// Copy stylesheets from src/ to lib/
let copyStylesheets = gulp.src('src/**/*.css').pipe(gulp.dest('lib'));

return merge(tsc, copyAddons, copyStylesheets);
});

/**
* Bundle JavaScript files produced by the `tsc` task, into a single file named `xterm.js` with
* Browserify.
*/
gulp.task('browserify', ['tsc'], function() {
// Ensure that the build directory exists
fs.ensureDirSync(buildDir);

let browserifyOptions = {
basedir: buildDir,
debug: true,
entries: ['../lib/xterm.js'],
standalone: 'Terminal',
cache: {},
packageCache: {}
};
let bundleStream = browserify(browserifyOptions)
.plugin(tsify)
.bundle()
.pipe(source('xterm.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true, sourceRoot: '..'}))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(buildDir));

// Copy all add-ons from lib/ to buildDir
let copyAddons = gulp.src('lib/addons/**/*').pipe(gulp.dest(`${buildDir}/addons`));

// Copy stylesheets from src/ to lib/
let copyStylesheets = gulp.src('lib/**/*.css').pipe(gulp.dest(buildDir));

return merge(bundleStream, copyAddons, copyStylesheets);
});


/**
* Use `sorcery` to resolve the source map chain and point back to the TypeScript files.
* (Without this task the source maps produced for the JavaScript bundle points into the
* compiled JavaScript files in lib/).
*/
gulp.task('sorcery', ['browserify'], function () {
var chain = sorcery.loadSync(`${buildDir}/xterm.js`);
var map = chain.apply();
chain.writeSync();
});

gulp.task('build', ['sorcery']);

gulp.task('default', ['build']);
14 changes: 11 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,26 @@
"browserify": "^13.1.0",
"chai": "3.5.0",
"docdash": "0.4.0",
"exorcist": "^0.4.0",
"express": "4.13.4",
"express-ws": "2.0.0-rc.1",
"fs-extra": "^1.0.0",
"glob": "^7.0.5",
"gulp": "^3.9.1",
"gulp-cli": "^1.2.2",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you install this in the project, only globally.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When used in an package.json script it works. Npm adds ./node_modules/.bin in PATH when running via npm run ....

"gulp-sourcemaps": "1.9.1",
"gulp-typescript": "^3.1.3",
"jsdoc": "3.4.3",
"merge-stream": "^1.0.1",
"mocha": "2.5.3",
"nodemon": "1.10.2",
"pty.js": "0.3.1",
"sleep": "^3.0.1",
"sorcery": "^0.10.0",
"tsify": "^3.0.0",
"tslint": "^4.0.2",
"typescript": "^2.0.3"
"typescript": "^2.0.3",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0"
},
"scripts": {
"prestart": "npm run build",
Expand All @@ -58,7 +66,7 @@
"lint": "tslint src/**/*.ts",
"test": "mocha --recursive ./lib",
"build:docs": "jsdoc -c jsdoc.json",
"build": "./bin/build",
"build": "gulp build",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated but can we merge npm run dev into npm start? I was confused as to why watching wasn't happening on npm start. I don't think there's any point to not watch on the dev version?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's leave this for another PR to keep this as much in context as possible.

"prepublish": "npm run build"
}
}
12 changes: 6 additions & 6 deletions src/xterm.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
* @license MIT
*/

import { CompositionHelper } from './CompositionHelper.js';
import { EventEmitter } from './EventEmitter.js';
import { Viewport } from './Viewport.js';
import { rightClickHandler, pasteHandler, copyHandler } from './handlers/Clipboard.js';
import { CircularList } from './utils/CircularList.js';
import { CompositionHelper } from './CompositionHelper';
import { EventEmitter } from './EventEmitter';
import { Viewport } from './Viewport';
import { rightClickHandler, pasteHandler, copyHandler } from './handlers/Clipboard';
import { CircularList } from './utils/CircularList';
import { C0 } from './EscapeSequences';
import { CharMeasure } from './utils/CharMeasure.js';
import { CharMeasure } from './utils/CharMeasure';
import * as Browser from './utils/Browser';
import * as Keyboard from './utils/Keyboard';

Expand Down
8 changes: 6 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
"outDir": "lib",
"sourceMap": true
},
"include": [
"src/**/*"
],
"exclude": [
"addons",
"src/addons/**/*",
"build",
"demo",
"dist",
"out",
"test",
"node_modules"
"node_modules",
"docs"
]
}