diff --git a/.gitignore b/.gitignore index 8e28c797..bf0c3d8c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ fixtures/typings-test/*.js dist/ src/utils/TestUtils.ts src/xterm.js + +# Keep the demo builds out of Git +demo/dist/ diff --git a/Dockerfile b/Dockerfile index 1f0db1f9..22556f43 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:6.9 +FROM node:6 MAINTAINER Paris Kasidiaris # Set the working directory @@ -6,7 +6,7 @@ WORKDIR /usr/src/app # Set an entrypoint, to automatically install node modules ENTRYPOINT ["/bin/bash", "-c", "if [[ ! -d node_modules ]]; then npm install; fi; exec \"${@:0}\";"] -CMD ["npm", "run", "dev"] +CMD ["npm", "run", "start"] # First, install dependencies to improve layer caching COPY package.json /usr/src/app/ diff --git a/Procfile.dev b/Procfile.dev deleted file mode 100644 index 8d2c5445..00000000 --- a/Procfile.dev +++ /dev/null @@ -1 +0,0 @@ -web: npm run dev diff --git a/demo/app.js b/demo/app.js index 8637dad8..7604e9cd 100644 --- a/demo/app.js +++ b/demo/app.js @@ -17,8 +17,12 @@ app.get('/style.css', function(req, res){ res.sendFile(__dirname + '/style.css'); }); -app.get('/main.js', function(req, res){ - res.sendFile(__dirname + '/main.js'); +app.get('/dist/bundle.js', function(req, res){ + res.sendFile(__dirname + '/dist/bundle.js'); +}); + +app.get('/dist/bundle.js.map', function(req, res){ + res.sendFile(__dirname + '/dist/bundle.js.map'); }); app.post('/terminals', function (req, res) { diff --git a/demo/index.html b/demo/index.html index 8d900903..93399f9c 100644 --- a/demo/index.html +++ b/demo/index.html @@ -7,12 +7,6 @@ - - - - - -

xterm.js: xterm, in the browser

@@ -71,6 +65,6 @@

Attention: The demo is a barebones implementation and is designed for xterm.js evaluation purposes only. Exposing the demo to the public as is would introduce security risks for the host.

- + diff --git a/demo/main.js b/demo/main.js index 9de682bf..58d79e19 100644 --- a/demo/main.js +++ b/demo/main.js @@ -1,3 +1,18 @@ +import * as Terminal from '../build/xterm'; +import * as attach from '../build/addons/attach/attach'; +import * as fit from '../build/addons/fit/fit'; +import * as fullscreen from '../build/addons/fullscreen/fullscreen'; +import * as search from '../build/addons/search/search'; +import * as winptyCompat from '../build/addons/winptyCompat/winptyCompat'; + + +Terminal.applyAddon(attach); +Terminal.applyAddon(fit); +Terminal.applyAddon(fullscreen); +Terminal.applyAddon(search); +Terminal.applyAddon(winptyCompat); + + var term, protocol, socketURL, diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index 9579dcf5..00000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,9 +0,0 @@ -version: '2' - -services: - web: - build: ./ - volumes: - - ./:/usr/src/app - ports: - - 3000:3000 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..03e88fbc --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: "3" + +services: + web: + build: . + volumes: + - ./:/usr/src/app + ports: + - ${XTERMJS_PORT:3000}:3000 diff --git a/gulpfile.js b/gulpfile.js index 0c3fe0f3..907529c4 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -16,6 +16,7 @@ const source = require('vinyl-source-stream'); const sourcemaps = require('gulp-sourcemaps'); const ts = require('gulp-typescript'); const util = require('gulp-util'); +const webpack = require('webpack-stream'); let buildDir = process.env.BUILD_DIR || 'build'; let tsProject = ts.createProject('tsconfig.json'); @@ -137,10 +138,7 @@ gulp.task('browserify-addons', ['tsc'], function() { // Copy all add-ons from outDir to buildDir let copyAddons = gulp.src([ // Copy JS addons - `${outDir}/addons/**/*`, - // Exclude TS addons from copy as they are being built via browserify - `!${outDir}/addons/search`, - `!${outDir}/addons/search/**`, + `${outDir}/addons/**/*` ]).pipe(gulp.dest(`${buildDir}/addons`)); return merge(searchBundle, winptyCompatBundle, copyAddons); @@ -196,6 +194,12 @@ gulp.task('sorcery-addons', ['browserify-addons'], function () { chain.writeSync(); }); +gulp.task('webpack', ['build'], function() { + return gulp.src('demo/main.js') + .pipe(webpack()) + .pipe(gulp.dest('demo/dist/')); +}); + /** * Submit coverage results to coveralls.io */ diff --git a/package.json b/package.json index 747d6d0a..22f60b75 100644 --- a/package.json +++ b/package.json @@ -69,20 +69,22 @@ "typescript": "~2.4.0", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", + "webpack": "^3.10.0", + "webpack-stream": "^4.0.0", "zmodem.js": "^0.1.5" }, "scripts": { - "prestart": "npm run build", + "prestart": "gulp webpack", "start": "node demo/app", "prestart-zmodem": "npm run build", "start-zmodem": "node build/addons/zmodem/demo/app", - "dev": "nodemon -e js,ts,css --watch src --watch demo --exec npm start", "lint": "tslint src/*.ts src/**/*.ts", "test": "gulp test", "build:docs": "jsdoc -c jsdoc.json", "build": "gulp build", "prepublish": "npm run build", - "coveralls": "gulp coveralls" + "coveralls": "gulp coveralls", + "webpack": "webpack" }, "dependencies": {} } diff --git a/src/addons/search/search.ts b/src/addons/search/search.ts index c9814802..480fea7f 100644 --- a/src/addons/search/search.ts +++ b/src/addons/search/search.ts @@ -12,7 +12,7 @@ import { SearchHelper } from './SearchHelper'; * @param term Tne search term. * @return Whether a result was found. */ -function findNext(terminal: any, term: string): boolean { +export function findNext(terminal: any, term: string): boolean { if (!terminal._searchHelper) { terminal.searchHelper = new SearchHelper(terminal); } @@ -25,7 +25,7 @@ function findNext(terminal: any, term: string): boolean { * @param term Tne search term. * @return Whether a result was found. */ -function findPrevious(terminal: any, term: string): boolean { +export function findPrevious(terminal: any, term: string): boolean { if (!terminal._searchHelper) { terminal.searchHelper = new SearchHelper(terminal); } diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..0c39626e --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,10 @@ +const path = require('path'); + +module.exports = { + entry: './demo/main.js', + output: { + path: path.resolve(__dirname, 'demo/dist'), + filename: 'bundle.js' + }, + devtool: 'source-map' +};