-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
78 lines (67 loc) · 2.27 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
const del = require('del')
const gulp = require('gulp')
const babel = require('gulp-babel')
const electronMocha = require('gulp-electron-mocha')
const sourcemaps = require('gulp-sourcemaps')
const fs = require('fs')
const JS_FILE_LIST = ['src/**/*.js', 'src/**/*.jsx']
const JS_TEST_FILE_LIST = ['test/**/*.js']
const COPY_LIST = {
src: ['src/**/*.css', 'src/**/app.mode.json', 'src/**/*.html'],
compiled: ['compiled/**/*'],
public: ['public/**/*']
}
const COMPILED_DEST = 'compiled'
const COMPILED_TEST_DEST = 'compiled-test'
const PACKAGED_DEST = 'app'
const COMPILE_TASKS = ['copy:src', 'compile:js', 'compile:test']
gulp.task('del:compiled', () => {
return del.sync([COMPILED_DEST + '/**/*', COMPILED_TEST_DEST + '/**/*'])
})
gulp.task('compile:js', ['del:compiled'], () => {
return gulp.src(JS_FILE_LIST)
.pipe(sourcemaps.init())
.pipe(babel({
'presets': ['es2015', 'react']
}))
.pipe(sourcemaps.write('../maps', {includeContent: false, sourceRoot: '../src'}))
.pipe(gulp.dest(COMPILED_DEST))
})
gulp.task('copy:src', ['del:compiled'], () => {
return gulp.src(COPY_LIST.src)
.pipe(gulp.dest(COMPILED_DEST))
})
gulp.task('compile:test', ['del:compiled'], () => {
return gulp.src(JS_TEST_FILE_LIST)
.pipe(babel({
'presets': ['es2015', 'react']
}))
.pipe(gulp.dest(COMPILED_TEST_DEST))
})
gulp.task('test', COMPILE_TASKS, () => {
return gulp.src(COMPILED_TEST_DEST + '/test.js', {read: false})
.pipe(electronMocha.default())
})
gulp.task('del:app', ['test'], () => {
return del.sync([PACKAGED_DEST + '/**/*'])
})
gulp.task('copy', ['del:app'], () => {
gulp.src(COPY_LIST.compiled)
.pipe(gulp.dest(PACKAGED_DEST + '/compiled'))
return gulp.src(COPY_LIST.public)
.pipe(gulp.dest(PACKAGED_DEST + '/public'))
})
gulp.task('package', ['copy'], () => {
let devPkg = JSON.parse(fs.readFileSync('package.json'))
let prodPkg = {
name: devPkg.name,
version: devPkg.version,
description: devPkg.description,
main: devPkg.main,
author: devPkg.author,
license: devPkg.license,
dependencies: devPkg.dependencies
}
fs.writeFileSync(PACKAGED_DEST + '/package.json', JSON.stringify(prodPkg))
fs.writeFileSync(PACKAGED_DEST + '/compiled/main/app.mode.json', JSON.stringify({ 'mode': 'production' }))
})