1 | var gulp = require('gulp'),
|
2 | cleanCSS = require('gulp-clean-css'),
|
3 | uglify = require('gulp-uglify'),
|
4 | filter = require('gulp-filter'),
|
5 | del = require('del'),
|
6 | Path = require('path'),
|
7 | fs = require('fs'),
|
8 | gutil = require('gulp-util'),
|
9 | babel = require("gulp-babel");
|
10 |
|
11 | var inputDir = process.argv[3];
|
12 | var outputDir = process.argv[5];
|
13 |
|
14 | var staticIgnoreFile = Path.resolve(inputDir, './.staticignore.json')
|
15 | var compileIgnore, completelyIgnore, allIgnores,babelIgnore
|
16 | var completelyIgnoreFilterPattern = ["**/*.*"]
|
17 | var allIgnoresFilterPattern = ["**/*.*"]
|
18 | try {
|
19 | var staticIgnore = fs.readFileSync(staticIgnoreFile, 'utf8');
|
20 | staticIgnore = JSON.parse(staticIgnore)
|
21 | compileIgnore = staticIgnore.compileIgnore || []
|
22 | completelyIgnore = staticIgnore.completelyIgnore || []
|
23 | babelIgnore = staticIgnore.babelrcIgnore
|
24 | compileIgnore = compileIgnore.map(function (item) {
|
25 | return '!' + item
|
26 | })
|
27 | completelyIgnore = completelyIgnore.map(function (item) {
|
28 | return '!' + item
|
29 | })
|
30 |
|
31 | allIgnores = compileIgnore.concat(completelyIgnore)
|
32 |
|
33 | allIgnoresFilterPattern = allIgnoresFilterPattern.concat(allIgnores)
|
34 | completelyIgnoreFilterPattern = completelyIgnoreFilterPattern.concat(completelyIgnore)
|
35 | } catch (e) {
|
36 | console.log('no .staticignore.json')
|
37 | }
|
38 |
|
39 |
|
40 |
|
41 |
|
42 | process.chdir(inputDir)
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | gulp.task('copy', function () {
|
48 | return gulp.src(completelyIgnoreFilterPattern)
|
49 | .pipe(gulp.dest(outputDir));
|
50 | });
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 | gulp.task('css', function () {
|
68 | var cssFilter = filter(allIgnoresFilterPattern)
|
69 | return gulp.src('**/*.css')
|
70 | .pipe(cssFilter)
|
71 | .pipe(cleanCSS({compatibility: 'ie8'}))
|
72 | .pipe(gulp.dest(outputDir));
|
73 |
|
74 | });
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 | var babelInner = {
|
86 | babelrc: false,
|
87 | presets: ["es2015", "stage-3"]
|
88 | }
|
89 | gulp.task('scripts', function () {
|
90 | var jsFilter = filter(allIgnoresFilterPattern)
|
91 | return gulp.src('**/*.js')
|
92 | .pipe(jsFilter)
|
93 | .pipe(babel(babelIgnore?babelInner:{}))
|
94 | .pipe(uglify().on('error', function (data) {
|
95 | console.log(data)
|
96 | throw new Error('uglify file error')
|
97 | }))
|
98 | .pipe(gulp.dest(outputDir));
|
99 | })
|
100 |
|
101 |
|
102 |
|
103 |
|
104 | gulp.task('clean', function (cb) {
|
105 | del([outputDir], cb)
|
106 | });
|
107 |
|
108 |
|
109 |
|
110 |
|
111 | gulp.task('default', ['copy'], function () {
|
112 | gulp.start( 'scripts', 'css' );
|
113 | });
|
114 |
|