conf.js
2.99 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
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
/**
* This file contains the variables used in other gulp files
* which defines tasks
* By design, we only put there very generic config values
* which are used in several places to keep good readability
* of the tasks
*/
var argv = require('minimist')(process.argv.slice(2));
var gutil = require('gulp-util');
var path = require('path');
var fs = require('fs');
/**
* The main paths of your project handle these with care
*/
exports.paths = {
src: 'src',
plugins: 'plugins',
dist: 'dist',
tmp: '.tmp',
e2e: 'e2e',
docs: 'docs',
themes: 'themes',
languages: 'languages'
};
/**
* Check if theme folder exists on "themes" directory
*
* @param path The string relative path of the theme
*/
exports.themeExists = function (path) {
try {
fs.statSync(path);
} catch (e) {
throw new Error('The theme "'+exports.paths.theme+ ' on path "'+path+'" was not found');
}
};
/**
* Check if skin file exists on "{theme}/app/layout/skins" directory
*
* @param skin The skin name passed by arg to gulp task
*/
exports.skinExists = function (skin) {
var skinPath, prefixPath = '';
var skinFile = skin+'.scss';
if (/skin-/.test(skin)) {
skinFile = skin.replace('skin-','_')+'.scss';
}
if (/-default$/.test(exports.paths.theme)) {
prefixPath = exports.paths.src;
}else {
prefixPath = path.join(exports.paths.themes, exports.paths.theme);
}
skinPath = path.join(prefixPath, '/app/layout/scss/skins/', skinFile);
try {
fs.statSync(skinPath);
} catch(e) {
throw new Error('The skin file "'+skinPath+'" was not found');
}
var content = fs.readFileSync(skinPath, {encoding: 'utf8'});
if(content.search(skin) == -1) {
throw new Error('The skin css selector ".'+skin+'" was not found in "'+skinPath+'" file');
}else if (content.search('@extend %skin-base') == -1) {
throw new Error('The skin css selector ".'+skin+'" needs inherit from %skin-base sass placeholder');
}
};
exports.configTheme = function(theme) {
exports.paths.theme = theme || "angular-default";
var themePath = path.join(exports.paths.themes, exports.paths.theme);
exports.paths.allSources = [exports.paths.src, themePath];
exports.themeExists(themePath);
exports.paths.dist = path.join("dist", exports.paths.theme);
if(argv.skin) {
exports.skinExists(argv.skin);
exports.paths.skin = argv.skin;
}
}
exports.configTheme(argv.theme);
/**
* Wiredep is the lib which inject bower dependencies in your project
* Mainly used to inject script tags in the index.html but also used
* to inject css preprocessor deps and js files in karma
*/
exports.wiredep = {
exclude: [/jquery/, /\/bootstrap\.js$/, /\/bootstrap-sass\/.*\.js/, /\/bootstrap\.css/],
directory: 'bower_components'
};
/**
* Common implementation for an error handler of a Gulp plugin
*/
exports.errorHandler = function(title) {
'use strict';
return function(err) {
gutil.log(gutil.colors.red('[' + title + ']'), err.toString());
this.emit('end');
};
};