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.
easy-markdown-editor/gulpfile.ts

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));