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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
var del = require('del'),
gulp = require('gulp'),
chmod = require('gulp-chmod'),
concat = require('gulp-concat'),
header = require('gulp-header'),
rename = require('gulp-rename'),
size = require('gulp-size'),
trim = require('gulp-trimlines'),
uglify = require('gulp-uglify'),
wrapUmd = require('gulp-wrap'),
pkg = require('./package.json'),
standard = require('gulp-standard')
var headerLong = ['/*!',
'* <%= pkg.name %> - <%= pkg.description %>',
'* @version <%= pkg.version %>',
'* <%= pkg.homepage %>',
'*',
'* @copyright <%= pkg.author %>',
'* @license <%= pkg.license %>',
'*',
'* BUILT: <%= pkg.buildDate %>',
'*/;',
''].join('\n')
var headerShort = '/*! <%= pkg.name %> v<%= pkg.version %> <%= pkg.license %>*/;'
// all files in the right order (currently we don't use any dependency management system)
var parts = [
'src/svg.js',
'src/regex.js',
'src/utilities.js',
'src/default.js',
'src/color.js',
'src/array.js',
'src/pointarray.js',
'src/patharray.js',
'src/number.js',
'src/HtmlNode.js',
'src/element.js',
'src/fx.js',
'src/matrix.js',
'src/point.js',
'src/attr.js',
'src/transform.js',
'src/css.js',
'src/parent.js',
'src/flatten.js',
'src/container.js',
'src/event.js',
'src/defs.js',
'src/group.js',
'src/arrange.js',
'src/mask.js',
'src/clip.js',
'src/gradient.js',
'src/pattern.js',
'src/doc.js',
'src/shape.js',
'src/bare.js',
'src/symbol.js',
'src/use.js',
'src/rect.js',
'src/ellipse.js',
'src/line.js',
'src/poly.js',
'src/pointed.js',
'src/path.js',
'src/image.js',
'src/text.js',
'src/textpath.js',
'src/hyperlink.js',
'src/marker.js',
'src/sugar.js',
'src/set.js',
'src/data.js',
'src/memory.js',
'src/selector.js',
'src/helpers.js',
'src/polyfill.js',
'src/boxes.js',
'src/parser.js'
]
gulp.task('clean', function () {
return del([ 'dist/*' ])
})
/**
* Compile everything in /src to one unified file in the order defined in the MODULES constant
* wrap the whole thing in a UMD wrapper (@see https://github.com/umdjs/umd)
* add the license information to the header plus the build time stamp
*/
gulp.task('unify', ['clean'], function () {
pkg.buildDate = Date()
return gulp.src(parts)
.pipe(standard())
.pipe(standard.reporter('default', {
showRuleNames: true,
breakOnError: true,
quiet: true
}))
.pipe(concat('svg.js', { newLine: '\n' }))
// wrap the whole thing in an immediate function call
.pipe(wrapUmd({src: 'src/umd.js'}))
.pipe(header(headerLong, { pkg: pkg }))
.pipe(trim({ leading: false }))
.pipe(chmod(0o644))
.pipe(gulp.dest('dist'))
.pipe(size({ showFiles: true, title: 'Full' }))
})
/**
* uglify the file and show the size of the result
* add the license info
* show the gzipped file size
*/
gulp.task('minify', ['unify'], function () {
return gulp.src('dist/svg.js')
.pipe(uglify())
.pipe(rename({ suffix: '.min' }))
.pipe(size({ showFiles: true, title: 'Minified' }))
.pipe(header(headerShort, { pkg: pkg }))
.pipe(chmod(0o644))
.pipe(gulp.dest('dist'))
.pipe(size({ showFiles: true, gzip: true, title: 'Gzipped' }))
})
gulp.task('default', ['clean', 'unify', 'minify'])
|