You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.3 KiB
TypeScript
81 lines
2.3 KiB
TypeScript
/* tslint:disable:no-implicit-dependencies no-var-requires */
|
|
import * as gulp from 'gulp';
|
|
import * as ts from 'gulp-typescript';
|
|
import * as uglify from 'gulp-uglify';
|
|
import * as typescript from 'typescript';
|
|
const cleanCSS = require('gulp-clean-css');
|
|
const concat = require('gulp-concat');
|
|
const header = require('gulp-header');
|
|
const buffer = require('vinyl-buffer');
|
|
const pkg = require('./package.json');
|
|
const eslint = require('gulp-eslint');
|
|
const browserify = require('browserify');
|
|
const source = require('vinyl-source-stream');
|
|
const rename = require('gulp-rename');
|
|
|
|
const banner = ['/**',
|
|
' * <%= pkg.name %> v<%= pkg.version %>',
|
|
' * Copyright <%= pkg.author %>',
|
|
' * @link <%= pkg.repository.url %>',
|
|
' * @license <%= pkg.license %>',
|
|
' */',
|
|
''].join('\n');
|
|
|
|
function lintJavascript() {
|
|
gulp.src('./src/js/**/*.js')
|
|
.pipe(eslint())
|
|
.pipe(eslint.format())
|
|
.pipe(eslint.failAfterError());
|
|
}
|
|
|
|
gulp.task('lint', lintJavascript);
|
|
|
|
function buildStyles() {
|
|
const cssFiles = [
|
|
'./node_modules/codemirror/lib/codemirror.css',
|
|
'./src/css/*.css',
|
|
'./node_modules/codemirror-spell-checker/src/css/spell-checker.css',
|
|
];
|
|
|
|
return gulp.src(cssFiles)
|
|
.pipe(concat('easymde.css'))
|
|
.pipe(cleanCSS())
|
|
.pipe(rename('easymde.min.css'))
|
|
.pipe(buffer())
|
|
.pipe(header(banner, {pkg}))
|
|
.pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
function compileTypescript() {
|
|
let failed = false;
|
|
const tsProject = ts.createProject('tsconfig.json', {typescript});
|
|
return gulp.src('src/ts/**/*.ts')
|
|
.pipe(tsProject())
|
|
.on('error', () => {
|
|
failed = true;
|
|
})
|
|
.on('finish', () => {
|
|
if (failed) {
|
|
process.exit(1);
|
|
}
|
|
})
|
|
.pipe(gulp.dest('build'));
|
|
}
|
|
|
|
function buildBrowserModule() {
|
|
return browserify(['build/newmde.js'], {standalone: 'NewMDE', extensions: 'common-shakeify'})
|
|
.bundle()
|
|
.pipe(source('newmde.min.js'))
|
|
.pipe(buffer())
|
|
.pipe(uglify())
|
|
.pipe(header(banner, {pkg}))
|
|
.pipe(gulp.dest('dist'));
|
|
}
|
|
|
|
const buildScripts = gulp.series(compileTypescript, buildBrowserModule);
|
|
|
|
gulp.task('lint', lintJavascript);
|
|
gulp.task('styles', buildStyles);
|
|
gulp.task('scripts', buildScripts);
|
|
gulp.task('default', gulp.parallel(buildStyles, buildScripts));
|