|
@@ -1,36 +1,70 @@
|
|
|
-var gulp = require('vinyl-fs'),
|
|
|
|
|
|
|
+var fs = require('vinyl-fs'),
|
|
|
|
|
+ zlib = require('zlib'),
|
|
|
|
|
+ uglifyjs = require('uglify-js'),
|
|
|
component = require('gulp-component'),
|
|
component = require('gulp-component'),
|
|
|
- rename = require('gulp-rename'),
|
|
|
|
|
- uglify = require('gulp-uglify'),
|
|
|
|
|
- header = require('gulp-header'),
|
|
|
|
|
- gzip = require('gulp-gzip')
|
|
|
|
|
|
|
+ map = require('map-stream')
|
|
|
|
|
|
|
|
-var dest = './dist'
|
|
|
|
|
-
|
|
|
|
|
-var headerTemplate =
|
|
|
|
|
|
|
+var dest = './dist',
|
|
|
|
|
+ headerText,
|
|
|
|
|
+ headerTemplate =
|
|
|
'/*\n' +
|
|
'/*\n' +
|
|
|
' VueJS v{{version}}\n' +
|
|
' VueJS v{{version}}\n' +
|
|
|
' (c) 2013 Evan You\n' +
|
|
' (c) 2013 Evan You\n' +
|
|
|
' License: MIT\n' +
|
|
' License: MIT\n' +
|
|
|
- '*/'
|
|
|
|
|
|
|
+ '*/\n'
|
|
|
|
|
|
|
|
module.exports = function (grunt) {
|
|
module.exports = function (grunt) {
|
|
|
grunt.registerTask('build', function (version) {
|
|
grunt.registerTask('build', function (version) {
|
|
|
|
|
+
|
|
|
version = version || grunt.config.get('version')
|
|
version = version || grunt.config.get('version')
|
|
|
- var headerText = headerTemplate.replace(/{{version}}/, version)
|
|
|
|
|
- gulp.src('./component.json')
|
|
|
|
|
|
|
+ headerText = headerTemplate.replace(/{{version}}/, version)
|
|
|
|
|
+
|
|
|
|
|
+ fs.src('./component.json')
|
|
|
.pipe(component.scripts({
|
|
.pipe(component.scripts({
|
|
|
standalone: 'Vue',
|
|
standalone: 'Vue',
|
|
|
name: 'vue'
|
|
name: 'vue'
|
|
|
}))
|
|
}))
|
|
|
- .pipe(header(headerText))
|
|
|
|
|
- .pipe(gulp.dest(dest))
|
|
|
|
|
- .pipe(uglify())
|
|
|
|
|
- .pipe(header(headerText))
|
|
|
|
|
- .pipe(rename('vue.min.js'))
|
|
|
|
|
- .pipe(gulp.dest(dest))
|
|
|
|
|
- .pipe(gzip())
|
|
|
|
|
- .pipe(gulp.dest(dest))
|
|
|
|
|
|
|
+ .pipe(map(header))
|
|
|
|
|
+ .pipe(fs.dest(dest))
|
|
|
|
|
+ .pipe(map(size))
|
|
|
|
|
+ .pipe(map(uglify))
|
|
|
|
|
+ .pipe(map(header))
|
|
|
|
|
+ .pipe(map(rename))
|
|
|
|
|
+ .pipe(fs.dest(dest))
|
|
|
|
|
+ .pipe(map(size))
|
|
|
|
|
+ .pipe(map(gzip))
|
|
|
|
|
+ .pipe(fs.dest(dest))
|
|
|
|
|
+ .pipe(map(size))
|
|
|
.on('end', this.async())
|
|
.on('end', this.async())
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function rename (file, cb) {
|
|
|
|
|
+ file.path = file.base + 'vue.min.js'
|
|
|
|
|
+ cb(null, file)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function header (file, cb) {
|
|
|
|
|
+ file.contents = Buffer.concat([new Buffer(headerText), file.contents])
|
|
|
|
|
+ cb(null, file)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function uglify (file, cb) {
|
|
|
|
|
+ file.contents = new Buffer(uglifyjs.minify(file.contents.toString(), {
|
|
|
|
|
+ fromString: true
|
|
|
|
|
+ }).code)
|
|
|
|
|
+ cb(null, file)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function gzip (file, cb) {
|
|
|
|
|
+ zlib.gzip(file.contents, function (err, buf) {
|
|
|
|
|
+ file.contents = buf
|
|
|
|
|
+ cb(err, file)
|
|
|
})
|
|
})
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function size (file, cb) {
|
|
|
|
|
+ console.log(file.relative + ': ' + (file.contents.length / 1024).toFixed(2) + 'kb')
|
|
|
|
|
+ cb(null, file)
|
|
|
}
|
|
}
|