181 lines
4.1 KiB
JavaScript
181 lines
4.1 KiB
JavaScript
var
|
|
browserslist = require('browserslist'),
|
|
console = require('better-console'),
|
|
config = require('./user'),
|
|
release = require('./project/release')
|
|
;
|
|
|
|
var defaultBrowsers = browserslist(browserslist.defaults)
|
|
var userBrowsers = browserslist()
|
|
var hasBrowserslistConfig = JSON.stringify(defaultBrowsers) !== JSON.stringify(userBrowsers)
|
|
|
|
var overrideBrowserslist = hasBrowserslistConfig ? undefined : [
|
|
'last 2 versions',
|
|
'> 1%',
|
|
'opera 12.1',
|
|
'bb 10',
|
|
'android 4'
|
|
]
|
|
|
|
module.exports = {
|
|
|
|
banner : release.banner,
|
|
|
|
log: {
|
|
created: function(file) {
|
|
return 'Created: ' + file;
|
|
},
|
|
modified: function(file) {
|
|
return 'Modified: ' + file;
|
|
}
|
|
},
|
|
|
|
filenames: {
|
|
concatenatedCSS : 'semantic.css',
|
|
concatenatedJS : 'semantic.js',
|
|
concatenatedMinifiedCSS : 'semantic.min.css',
|
|
concatenatedMinifiedJS : 'semantic.min.js',
|
|
concatenatedRTLCSS : 'semantic.rtl.css',
|
|
concatenatedMinifiedRTLCSS : 'semantic.rtl.min.css'
|
|
},
|
|
|
|
regExp: {
|
|
|
|
comments: {
|
|
|
|
// remove all comments from config files (.variable)
|
|
variables : {
|
|
in : /(\/\*[\s\S]+?\*\/+)[\s\S]+?\/\* End Config \*\//,
|
|
out : '$1',
|
|
},
|
|
|
|
// add version to first comment
|
|
license: {
|
|
in : /(^\/\*[\s\S]+)(# Fomantic-UI )([\s\S]+?\*\/)/,
|
|
out : '$1$2' + release.version + ' $3'
|
|
},
|
|
|
|
// adds uniform spacing around comments
|
|
large: {
|
|
in : /(\/\*\*\*\*[\s\S]+?\*\/)/mg,
|
|
out : '\n\n$1\n'
|
|
},
|
|
small: {
|
|
in : /(\/\*---[\s\S]+?\*\/)/mg,
|
|
out : '\n$1\n'
|
|
},
|
|
tiny: {
|
|
in : /(\/\* [\s\S]+? \*\/)/mg,
|
|
out : '\n$1'
|
|
}
|
|
},
|
|
|
|
theme: /.*(\/|\\)themes(\/|\\).*?(?=(\/|\\))/mg
|
|
|
|
},
|
|
|
|
settings: {
|
|
|
|
/* Remove Files in Clean */
|
|
del: {
|
|
silent : true
|
|
},
|
|
|
|
concatCSS: {
|
|
rebaseUrls: false
|
|
},
|
|
|
|
/* Comment Banners */
|
|
header: {
|
|
year : (new Date()).getFullYear(),
|
|
title : release.title,
|
|
version : release.version,
|
|
repository : release.repository,
|
|
url : release.url
|
|
},
|
|
|
|
plumber: {
|
|
less: {
|
|
errorHandler: function(error) {
|
|
var
|
|
regExp = {
|
|
variable : /@(\S.*?)\s/,
|
|
theme : /themes[\/\\]+(.*?)[\/\\].*/,
|
|
element : /[\/\\]([^\/\\*]*)\.overrides/
|
|
},
|
|
theme,
|
|
element
|
|
;
|
|
if(error && error.filename && error.filename.match(/theme.less/)) {
|
|
if (error.line == 9) {
|
|
element = regExp.variable.exec(error.message)[1];
|
|
if (element) {
|
|
console.error('Missing theme.config value for ', element);
|
|
}
|
|
console.error('Most likely new UI was added in an update. You will need to add missing elements from theme.config.example');
|
|
} else if (error.line == 73) {
|
|
element = regExp.element.exec(error.message)[1];
|
|
theme = regExp.theme.exec(error.message)[1];
|
|
console.error(theme + ' is not an available theme for ' + element);
|
|
} else {
|
|
console.error(error);
|
|
}
|
|
}
|
|
else {
|
|
throw new Error(error);
|
|
}
|
|
this.emit('end');
|
|
}
|
|
}
|
|
},
|
|
|
|
/* What Browsers to Prefix */
|
|
prefix: {
|
|
overrideBrowserslist
|
|
},
|
|
|
|
/* File Renames */
|
|
rename: {
|
|
minJS : { extname : '.min.js' },
|
|
minCSS : { extname : '.min.css' },
|
|
rtlCSS : { extname : '.rtl.css' },
|
|
rtlMinCSS : { extname : '.rtl.min.css' }
|
|
},
|
|
|
|
/* Minified CSS Concat */
|
|
minify: {
|
|
level: {
|
|
1: {
|
|
inline : false
|
|
}
|
|
}
|
|
},
|
|
|
|
/* Minified JS Settings */
|
|
uglify: {
|
|
mangle : true,
|
|
output: {
|
|
comments: 'some'
|
|
}
|
|
},
|
|
|
|
/* Minified Concat CSS Settings */
|
|
concatMinify: {
|
|
level: {
|
|
1: {
|
|
inline : false,
|
|
specialComments : false
|
|
}
|
|
}
|
|
},
|
|
|
|
/* Minified Concat JS */
|
|
concatUglify: {
|
|
mangle : true,
|
|
output: {
|
|
comments: 'some'
|
|
}
|
|
}
|
|
|
|
}
|
|
};
|