forked from oknosoft/helloworld
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
91 lines (79 loc) · 2.45 KB
/
gulpfile.js
File metadata and controls
91 lines (79 loc) · 2.45 KB
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
/**
* gulpfile.js for metadata-based projects
*
* © Evgeniy Malyarov http://www.oknosoft.ru 2014-2016
*/
var gulp = require('gulp'),
base64 = require('gulp-base64'),
csso = require('gulp-csso'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
//inject = require('gulp-inject-string'),
resources = require('./src/utils/resource-concat.js'),
prebuild = require('./src/utils/prebuild.js'),
umd = require('gulp-umd'),
replace = require('gulp-replace'),
package_data = JSON.parse(require('fs').readFileSync('./package.json', 'utf8')); // данные файла package.json
module.exports = gulp;
// Основная сборка проекта
function main(){
return gulp.src([
'./tmp/prebuild.js',
'./tmp/injected.js',
'./src/modifiers/**/*.js',
'./src/i18n.ru.js',
'./src/main.js',
'./src/wdg_*.js',
'./src/view_*.js'
])
.pipe(concat('app.js'))
.pipe(umd({
exports: function(file) {
return 'undefined';
}
}))
.pipe(replace(/PACKAGE_VERSION/g, package_data.version))
.pipe(replace(/PACKAGE_PREFIX/g, package_data.config.prefix))
.pipe(replace(/PACKAGE_ZONE_DEMO/g, package_data.config.zone_demo || 0))
.pipe(replace(/PACKAGE_ZONE/g, package_data.config.zone || 0))
.pipe(replace(/PACKAGE_COUCHDB/g, package_data.config.couchdb))
.pipe(replace(/PACKAGE_REST_1C/g, package_data.config.rest_1c))
.pipe(replace(/PACKAGE_ATT_MAX_SIZE/g, package_data.config.attachment_max_size || 0))
.pipe(gulp.dest('./dist'))
.pipe(rename('app.min.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist'));
}
gulp.task('main', main);
// Сборка метаданных
gulp.task('prebuild', function(){
return gulp.src(['./src/utils/default_settings.js'])
.pipe(prebuild(package_data))
.pipe(gulp.dest('./tmp'));
});
// Сборка ресурсов
gulp.task('injected', function(){
return gulp.src([
'./src/templates/html/*.html',
'./src/templates/xml/*.xml'
])
.pipe(resources('injected.js', function (data) {
return new Buffer('$p.injected_data._mixin(' + JSON.stringify(data) + ');');
}))
.pipe(gulp.dest('./tmp'));
});
// Сборка css
gulp.task('css-base64', function () {
return gulp.src([
'./src/templates/*.css'
])
.pipe(base64({
maxImageSize: 32*1024 // bytes
}))
.pipe(concat('app.css'))
.pipe(csso())
.pipe(gulp.dest('./dist'));
});
// Пересборка всех частей
gulp.task('full', ['prebuild', 'injected', 'css-base64'], main);