1
1
var gulp = require ( 'gulp' ) ;
2
- var concat = require ( 'gulp-concat' ) ;
3
2
var eslint = require ( 'gulp-eslint' ) ;
4
3
var file = require ( 'gulp-file' ) ;
5
- var insert = require ( 'gulp-insert' ) ;
6
4
var replace = require ( 'gulp-replace' ) ;
7
5
var size = require ( 'gulp-size' ) ;
8
6
var streamify = require ( 'gulp-streamify' ) ;
9
- var uglify = require ( 'gulp-uglify ' ) ;
7
+ var terser = require ( 'gulp-terser ' ) ;
10
8
var util = require ( 'gulp-util' ) ;
11
9
var zip = require ( 'gulp-zip' ) ;
12
- var exec = require ( 'child-process-promise ' ) . exec ;
10
+ var exec = require ( 'child_process ' ) . exec ;
13
11
var karma = require ( 'karma' ) ;
14
- var browserify = require ( 'browserify' ) ;
15
- var source = require ( 'vinyl-source-stream' ) ;
16
12
var merge = require ( 'merge-stream' ) ;
17
- var collapse = require ( 'bundle-collapser/plugin' ) ;
18
13
var yargs = require ( 'yargs' ) ;
19
14
var path = require ( 'path' ) ;
20
- var fs = require ( 'fs' ) ;
21
15
var htmllint = require ( 'gulp-htmllint' ) ;
22
16
var pkg = require ( './package.json' ) ;
23
17
24
18
var argv = yargs
25
- . option ( 'force-output' , { default : false } )
26
- . option ( 'silent-errors' , { default : false } )
27
19
. option ( 'verbose' , { default : false } )
28
20
. argv ;
29
21
30
22
var srcDir = './src/' ;
31
23
var outDir = './dist/' ;
32
24
33
- var header = "/*!\n" +
34
- " * Chart.js\n" +
35
- " * http://chartjs.org/\n" +
36
- " * Version: {{ version }}\n" +
37
- " *\n" +
38
- " * Copyright " + ( new Date ( ) . getFullYear ( ) ) + " Chart.js Contributors\n" +
39
- " * Released under the MIT license\n" +
40
- " * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n" +
41
- " */\n" ;
42
-
43
25
if ( argv . verbose ) {
44
26
util . log ( "Gulp running with options: " + JSON . stringify ( argv , null , 2 ) ) ;
45
27
}
46
28
47
29
gulp . task ( 'bower' , bowerTask ) ;
48
30
gulp . task ( 'build' , buildTask ) ;
49
31
gulp . task ( 'package' , packageTask ) ;
50
- gulp . task ( 'watch' , watchTask ) ;
51
32
gulp . task ( 'lint-html' , lintHtmlTask ) ;
52
33
gulp . task ( 'lint-js' , lintJsTask ) ;
53
34
gulp . task ( 'lint' , gulp . parallel ( 'lint-html' , 'lint-js' ) ) ;
@@ -57,7 +38,25 @@ gulp.task('test', gulp.parallel('lint', 'unittest'));
57
38
gulp . task ( 'library-size' , librarySizeTask ) ;
58
39
gulp . task ( 'module-sizes' , moduleSizesTask ) ;
59
40
gulp . task ( 'size' , gulp . parallel ( 'library-size' , 'module-sizes' ) ) ;
60
- gulp . task ( 'default' , gulp . parallel ( 'build' , 'watch' ) ) ;
41
+ gulp . task ( 'default' , gulp . parallel ( 'build' ) ) ;
42
+
43
+ function run ( bin , args , done ) {
44
+ return new Promise ( function ( resolve , reject ) {
45
+ var exe = '"' + process . execPath + '"' ;
46
+ var src = require . resolve ( bin ) ;
47
+ var ps = exec ( [ exe , src ] . concat ( args || [ ] ) . join ( ' ' ) ) ;
48
+
49
+ ps . stdout . pipe ( process . stdout ) ;
50
+ ps . stderr . pipe ( process . stderr ) ;
51
+ ps . on ( 'close' , function ( error ) {
52
+ if ( error ) {
53
+ reject ( error ) ;
54
+ } else {
55
+ resolve ( ) ;
56
+ }
57
+ } ) ;
58
+ } ) ;
59
+ }
61
60
62
61
/**
63
62
* Generates the bower.json manifest file which will be pushed along release tags.
@@ -70,7 +69,7 @@ function bowerTask() {
70
69
homepage : pkg . homepage ,
71
70
license : pkg . license ,
72
71
version : pkg . version ,
73
- main : outDir + " Chart.js" ,
72
+ main : outDir + ' Chart.js' ,
74
73
ignore : [
75
74
'.github' ,
76
75
'.codeclimate.yml' ,
@@ -86,52 +85,7 @@ function bowerTask() {
86
85
}
87
86
88
87
function buildTask ( ) {
89
-
90
- var errorHandler = function ( err ) {
91
- if ( argv . forceOutput ) {
92
- var browserError = 'console.error("Gulp: ' + err . toString ( ) + '")' ;
93
- [ 'Chart' , 'Chart.min' , 'Chart.bundle' , 'Chart.bundle.min' ] . forEach ( function ( fileName ) {
94
- fs . writeFileSync ( outDir + fileName + '.js' , browserError ) ;
95
- } ) ;
96
- }
97
- if ( argv . silentErrors ) {
98
- util . log ( util . colors . red ( '[Error]' ) , err . toString ( ) ) ;
99
- this . emit ( 'end' ) ;
100
- } else {
101
- throw err ;
102
- }
103
- }
104
-
105
- var bundled = browserify ( './src/chart.js' , { standalone : 'Chart' } )
106
- . plugin ( collapse )
107
- . bundle ( )
108
- . on ( 'error' , errorHandler )
109
- . pipe ( source ( 'Chart.bundle.js' ) )
110
- . pipe ( insert . prepend ( header ) )
111
- . pipe ( streamify ( replace ( '{{ version }}' , pkg . version ) ) )
112
- . pipe ( gulp . dest ( outDir ) )
113
- . pipe ( streamify ( uglify ( ) ) )
114
- . pipe ( insert . prepend ( header ) )
115
- . pipe ( streamify ( replace ( '{{ version }}' , pkg . version ) ) )
116
- . pipe ( streamify ( concat ( 'Chart.bundle.min.js' ) ) )
117
- . pipe ( gulp . dest ( outDir ) ) ;
118
-
119
- var nonBundled = browserify ( './src/chart.js' , { standalone : 'Chart' } )
120
- . ignore ( 'moment' )
121
- . plugin ( collapse )
122
- . bundle ( )
123
- . on ( 'error' , errorHandler )
124
- . pipe ( source ( 'Chart.js' ) )
125
- . pipe ( insert . prepend ( header ) )
126
- . pipe ( streamify ( replace ( '{{ version }}' , pkg . version ) ) )
127
- . pipe ( gulp . dest ( outDir ) )
128
- . pipe ( streamify ( uglify ( ) ) )
129
- . pipe ( insert . prepend ( header ) )
130
- . pipe ( streamify ( replace ( '{{ version }}' , pkg . version ) ) )
131
- . pipe ( streamify ( concat ( 'Chart.min.js' ) ) )
132
- . pipe ( gulp . dest ( outDir ) ) ;
133
-
134
- return merge ( bundled , nonBundled ) ;
88
+ return run ( 'rollup/bin/rollup' , [ '-c' , argv . watch ? '--watch' : '' ] ) ;
135
89
}
136
90
137
91
function packageTask ( ) {
@@ -180,17 +134,12 @@ function lintHtmlTask() {
180
134
} ) ) ;
181
135
}
182
136
183
- function docsTask ( done ) {
184
- var script = require . resolve ( 'gitbook-cli/bin/gitbook.js' ) ;
185
- var cmd = '"' + process . execPath + '"' ;
186
-
187
- exec ( [ cmd , script , 'install' , './' ] . join ( ' ' ) ) . then ( ( ) => {
188
- return exec ( [ cmd , script , argv . watch ? 'serve' : 'build' , './' , './dist/docs' ] . join ( ' ' ) ) ;
189
- } ) . then ( ( ) => {
190
- done ( ) ;
191
- } ) . catch ( ( err ) => {
192
- done ( new Error ( err . stdout || err ) ) ;
193
- } )
137
+ function docsTask ( ) {
138
+ var bin = 'gitbook-cli/bin/gitbook.js' ;
139
+ var cmd = argv . watch ? 'serve' : 'build' ;
140
+
141
+ return run ( bin , [ 'install' , './' ] )
142
+ . then ( ( ) => run ( bin , [ cmd , './' , './dist/docs' ] ) ) ;
194
143
}
195
144
196
145
function unittestTask ( done ) {
@@ -199,9 +148,8 @@ function unittestTask(done) {
199
148
singleRun : ! argv . watch ,
200
149
args : {
201
150
coverage : ! ! argv . coverage ,
202
- inputs : argv . inputs
203
- ? argv . inputs . split ( ';' )
204
- : [ './test/specs/**/*.js' ]
151
+ inputs : ( argv . inputs || 'test/specs/**/*.js' ) . split ( ';' ) ,
152
+ watch : argv . watch
205
153
}
206
154
} ,
207
155
// https://github.com/karma-runner/gulp-karma/issues/18
@@ -220,13 +168,9 @@ function librarySizeTask() {
220
168
221
169
function moduleSizesTask ( ) {
222
170
return gulp . src ( srcDir + '**/*.js' )
223
- . pipe ( uglify ( ) )
171
+ . pipe ( terser ( ) )
224
172
. pipe ( size ( {
225
173
showFiles : true ,
226
174
gzip : true
227
175
} ) ) ;
228
176
}
229
-
230
- function watchTask ( ) {
231
- return gulp . watch ( './src/**' , gulp . parallel ( 'build' ) ) ;
232
- }
0 commit comments