1
- var gulp = require ( 'vinyl-fs' ) ,
1
+ var fs = require ( 'vinyl-fs' ) ,
2
+ zlib = require ( 'zlib' ) ,
3
+ uglifyjs = require ( 'uglify-js' ) ,
2
4
component = require ( 'gulp-component' ) ,
3
- rename = require ( 'gulp-rename' ) ,
4
- uglify = require ( 'gulp-uglify' ) ,
5
- header = require ( 'gulp-header' ) ,
6
- gzip = require ( 'gulp-gzip' )
5
+ map = require ( 'map-stream' )
7
6
8
- var dest = './dist'
9
-
10
- var headerTemplate =
7
+ var dest = './dist' ,
8
+ headerText ,
9
+ headerTemplate =
11
10
'/*\n' +
12
11
' VueJS v{{version}}\n' +
13
12
' (c) 2013 Evan You\n' +
14
13
' License: MIT\n' +
15
- '*/'
14
+ '*/\n '
16
15
17
16
module . exports = function ( grunt ) {
18
17
grunt . registerTask ( 'build' , function ( version ) {
18
+
19
19
version = version || grunt . config . get ( 'version' )
20
- var headerText = headerTemplate . replace ( / { { version} } / , version )
21
- gulp . src ( './component.json' )
20
+ headerText = headerTemplate . replace ( / { { version} } / , version )
21
+
22
+ fs . src ( './component.json' )
22
23
. pipe ( component . scripts ( {
23
24
standalone : 'Vue' ,
24
25
name : 'vue'
25
26
} ) )
26
- . pipe ( header ( headerText ) )
27
- . pipe ( gulp . dest ( dest ) )
28
- . pipe ( uglify ( ) )
29
- . pipe ( header ( headerText ) )
30
- . pipe ( rename ( 'vue.min.js' ) )
31
- . pipe ( gulp . dest ( dest ) )
32
- . pipe ( gzip ( ) )
33
- . pipe ( gulp . dest ( dest ) )
27
+ . pipe ( map ( header ) )
28
+ . pipe ( fs . dest ( dest ) )
29
+ . pipe ( map ( size ) )
30
+ . pipe ( map ( uglify ) )
31
+ . pipe ( map ( header ) )
32
+ . pipe ( map ( rename ) )
33
+ . pipe ( fs . dest ( dest ) )
34
+ . pipe ( map ( size ) )
35
+ . pipe ( map ( gzip ) )
36
+ . pipe ( fs . dest ( dest ) )
37
+ . pipe ( map ( size ) )
34
38
. on ( 'end' , this . async ( ) )
39
+
40
+ } )
41
+ }
42
+
43
+ function rename ( file , cb ) {
44
+ file . path = file . base + 'vue.min.js'
45
+ cb ( null , file )
46
+ }
47
+
48
+ function header ( file , cb ) {
49
+ file . contents = Buffer . concat ( [ new Buffer ( headerText ) , file . contents ] )
50
+ cb ( null , file )
51
+ }
52
+
53
+ function uglify ( file , cb ) {
54
+ file . contents = new Buffer ( uglifyjs . minify ( file . contents . toString ( ) , {
55
+ fromString : true
56
+ } ) . code )
57
+ cb ( null , file )
58
+ }
59
+
60
+ function gzip ( file , cb ) {
61
+ zlib . gzip ( file . contents , function ( err , buf ) {
62
+ file . contents = buf
63
+ cb ( err , file )
35
64
} )
65
+ }
66
+
67
+ function size ( file , cb ) {
68
+ console . log ( file . relative + ': ' + ( file . contents . length / 1024 ) . toFixed ( 2 ) + 'kb' )
69
+ cb ( null , file )
36
70
}
0 commit comments