mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2024-12-23 10:38:55 +00:00
df698a24ba
- Build tests in `gulp build` - Watch test files - Clean test files as well
131 lines
3.6 KiB
JavaScript
131 lines
3.6 KiB
JavaScript
import gulp from 'gulp';
|
|
import del from 'del';
|
|
import sourcemaps from 'gulp-sourcemaps';
|
|
import webpack from 'webpack-stream';
|
|
import babel from 'gulp-babel';
|
|
import runSequence from 'run-sequence';
|
|
import path from 'path';
|
|
import childProcess from 'child_process';
|
|
import eslint from 'gulp-eslint';
|
|
import mocha from 'gulp-mocha';
|
|
|
|
const PATHS = setUpPaths();
|
|
|
|
gulp.task('default', ['build']);
|
|
|
|
gulp.task('build', callback => {
|
|
runSequence('clean', ['build-cli', 'build-app', 'build-tests'], callback);
|
|
});
|
|
|
|
gulp.task('build-app', ['build-static'], () => {
|
|
return gulp.src(PATHS.APP_MAIN_JS)
|
|
.pipe(webpack(require(PATHS.WEBPACK_CONFIG)))
|
|
.pipe(gulp.dest(PATHS.APP_DEST));
|
|
});
|
|
|
|
gulp.task('clean', callback => {
|
|
del(PATHS.CLI_DEST).then(() => {
|
|
del(PATHS.APP_DEST).then(() => {
|
|
del(PATHS.TEST_DEST).then(() => {
|
|
callback();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
gulp.task('build-cli', done => {
|
|
return gulp.src(PATHS.CLI_SRC_JS)
|
|
.pipe(sourcemaps.init())
|
|
.pipe(babel())
|
|
.on('error', done)
|
|
.pipe(sourcemaps.write('.'))
|
|
.pipe(gulp.dest('lib'));
|
|
});
|
|
|
|
gulp.task('build-static', ['build-static-js', 'build-static-not-js']);
|
|
|
|
gulp.task('build-static-not-js', () => {
|
|
return gulp.src([PATHS.APP_STATIC_ALL, '!**/*.js'])
|
|
.pipe(gulp.dest(PATHS.APP_STATIC_DEST));
|
|
});
|
|
|
|
gulp.task('build-static-js', done => {
|
|
return gulp.src(PATHS.APP_STATIC_JS)
|
|
.pipe(sourcemaps.init())
|
|
.pipe(babel())
|
|
.on('error', done)
|
|
.pipe(sourcemaps.write('.'))
|
|
.pipe(gulp.dest(PATHS.APP_STATIC_DEST));
|
|
});
|
|
|
|
gulp.task('watch', ['build'], () => {
|
|
var handleError = function(error) {
|
|
console.error(error);
|
|
};
|
|
gulp.watch(PATHS.APP_ALL, ['build-app'])
|
|
.on('error', handleError);
|
|
|
|
gulp.watch(PATHS.CLI_SRC_JS, ['build-cli'])
|
|
.on('error', handleError);
|
|
|
|
gulp.watch(PATHS.TEST_SRC_JS, ['build-tests'])
|
|
.on('error', handleError);
|
|
});
|
|
|
|
gulp.task('publish', done => {
|
|
childProcess.spawn('npm', ['publish'], {stdio: 'inherit'})
|
|
.on('close', done);
|
|
});
|
|
|
|
gulp.task('release', callback => {
|
|
return runSequence('test', 'lint', 'build', 'publish', callback);
|
|
});
|
|
|
|
gulp.task('lint', () => {
|
|
return gulp.src(['**/*.js', '!node_modules/**', '!app/node_modules/**', '!app/lib/**', '!lib/**', '!built-tests/**'])
|
|
.pipe(eslint())
|
|
.pipe(eslint.format())
|
|
.pipe(eslint.failAfterError());
|
|
});
|
|
|
|
gulp.task('build-tests', done => {
|
|
return gulp.src(PATHS.TEST_SRC_JS)
|
|
.pipe(sourcemaps.init())
|
|
.pipe(babel())
|
|
.on('error', done)
|
|
.pipe(sourcemaps.write('.'))
|
|
.pipe(gulp.dest(PATHS.TEST_DEST));
|
|
});
|
|
|
|
gulp.task('test', ['build'], () => {
|
|
return gulp.src(PATHS.TEST_DEST_JS, {read: false})
|
|
.pipe(mocha());
|
|
});
|
|
|
|
gulp.task('ci', callback => {
|
|
return runSequence('test', 'lint', callback);
|
|
});
|
|
|
|
function setUpPaths() {
|
|
const paths = {
|
|
WEBPACK_CONFIG: './webpack.config.js',
|
|
APP_SRC: 'app/src',
|
|
APP_DEST: 'app/lib',
|
|
CLI_SRC: 'src',
|
|
CLI_DEST: 'lib',
|
|
TEST_SRC: 'test',
|
|
TEST_DEST: 'built-tests'
|
|
};
|
|
|
|
paths.APP_MAIN_JS = path.join(paths.APP_SRC, '/main.js');
|
|
paths.APP_ALL = paths.APP_SRC + '/**/*';
|
|
paths.APP_STATIC_ALL = path.join(paths.APP_SRC, 'static') + '/**/*';
|
|
paths.APP_STATIC_JS = path.join(paths.APP_SRC, 'static') + '/**/*.js';
|
|
paths.APP_STATIC_DEST = path.join(paths.APP_DEST, 'static');
|
|
paths.CLI_SRC_JS = paths.CLI_SRC + '/**/*.js';
|
|
paths.TEST_SRC_JS = paths.TEST_SRC + '/**/*.js';
|
|
paths.TEST_DEST_JS = paths.TEST_DEST + '/**/*.js';
|
|
|
|
return paths;
|
|
}
|