1- var gulp = require ( 'vinyl-fs' ) ,
1+ var fs = require ( 'vinyl-fs' ) ,
2+ zlib = require ( 'zlib' ) ,
3+ uglifyjs = require ( 'uglify-js' ) ,
24 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' )
76
8- var dest = './dist'
9-
10- var headerTemplate =
7+ var dest = './dist' ,
8+ headerText ,
9+ headerTemplate =
1110 '/*\n' +
1211 ' VueJS v{{version}}\n' +
1312 ' (c) 2013 Evan You\n' +
1413 ' License: MIT\n' +
15- '*/'
14+ '*/\n '
1615
1716module . exports = function ( grunt ) {
1817 grunt . registerTask ( 'build' , function ( version ) {
18+
1919 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' )
2223 . pipe ( component . scripts ( {
2324 standalone : 'Vue' ,
2425 name : 'vue'
2526 } ) )
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 ) )
3438 . 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 )
3564 } )
65+ }
66+
67+ function size ( file , cb ) {
68+ console . log ( file . relative + ': ' + ( file . contents . length / 1024 ) . toFixed ( 2 ) + 'kb' )
69+ cb ( null , file )
3670}
0 commit comments