forked from KevinJump/uSync
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
134 lines (99 loc) · 3.35 KB
/
gulpfile.js
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
130
131
132
133
const { watch, src, dest } = require('gulp');
const del = require('del');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var sourcemaps = require('gulp-sourcemaps');
const cleanCSS = require('gulp-clean-css');
const transformManifest = require('./gulp-transformManifest');
const sourceFolders = [
'uSync.BackOffice.Assets/App_Plugins/uSync/'
];
const pluginName = 'uSync';
const destination = 'uSync.Site/App_Plugins/uSync';
const minDest = 'uSync.BackOffice.Assets/wwwroot/';
// fetch command line arguments
const arg = (argList => {
let arg = {}, a, opt, thisOpt, curOpt;
for (a = 0; a < argList.length; a++) {
thisOpt = argList[a].trim();
opt = thisOpt.replace(/^\-+/, '');
if (opt === thisOpt) {
// argument value
if (curOpt) arg[curOpt] = opt;
curOpt = null;
}
else {
// argument name
curOpt = opt;
arg[curOpt] = true;
}
}
return arg;
})(process.argv);
function copy(path, baseFolder) {
return src(path, { base: baseFolder })
.pipe(dest(destination));
}
function minifyJs(path, version) {
return src(path, { base: path })
.pipe(sourcemaps.init())
.pipe(concat('usync.' + version + '.min.js'))
.pipe(uglify({ mangle: false }))
.pipe(sourcemaps.write('.'))
.pipe(dest(minDest));
}
function minifyCss(path, version) {
return src([path, '!**/nonodes.css'], { base: path })
.pipe(cleanCSS({ compatibility: 'ie8'}))
.pipe(concat('usync.' + version + '.min.css'))
.pipe(dest(minDest));
}
function copyRequired(path, baseFolder, destFolder) {
return src([path, '!**/*.manifest', '!**/*.js', '!**/*.css'], { base: baseFolder })
.pipe(dest(destFolder));
}
function copySpecific(file, baseFolder, destfolder) {
return src(file, { base: baseFolder })
.pipe(dest(destfolder));
}
function time() {
return '[' + new Date().toISOString().slice(11, -5) + ']';
}
function updateManifest(manifest, version) {
return src(manifest)
.pipe(transformManifest({
folder : pluginName,
name: pluginName.toLowerCase(),
version: version
}))
.pipe(dest(minDest));
}
////////////
exports.default = function() {
sourceFolders.forEach(function (sourceFolder) {
let source = sourceFolder + '**/*';
watch(source, { ignoreInitial: false })
.on('change', function (path, stats) {
console.log(time(), path, sourceFolder, 'changed');
copy(path, sourceFolder);
})
.on('add', function (path, stats) {
console.log(time(), path, sourceFolder, 'added');
copy(path, sourceFolder);
});
});
};
exports.minify = function (cb) {
var version = arg.release;
sourceFolders.forEach(function (sourceFolder) {
let source = sourceFolder + '**/*';
let jsfiles = sourceFolder + '**/*.js';
let cssFiles = sourceFolder + '**/*.css';
minifyJs(jsfiles, version);
minifyCss(cssFiles, version);
// updateManifest(sourceFolder + "/package.manifest", version);
copyRequired(source, sourceFolder, minDest);
copySpecific(sourceFolder + '**/nonodes.css', sourceFolder, minDest);
});
cb();
}