8 changed files with 133 additions and 790 deletions
Unified View
Diff Options
-
327Gruntfile.js
-
10build.json
-
176gulpfile.js
-
9package.json
-
2src/themes/basic/elements/icon.variables
-
14src/themes/default/globals/site.variables
-
3src/themes/default/modules/tab.variables
-
382src/themes/flat/globals/site.variables
@ -1,327 +0,0 @@ |
|||||
module.exports = function(grunt) { |
|
||||
|
|
||||
var |
|
||||
|
|
||||
site = grunt.file.readJSON('build.config'), |
|
||||
|
|
||||
// shortcut
|
|
||||
paths = site.paths, |
|
||||
|
|
||||
defaultTasks = [ |
|
||||
// run grunt watch
|
|
||||
'watch' |
|
||||
], |
|
||||
|
|
||||
watchTasks = [ |
|
||||
// compiles less
|
|
||||
'less:build', |
|
||||
|
|
||||
// copy js
|
|
||||
'copy:file', |
|
||||
|
|
||||
// auto prefix modified file
|
|
||||
'autoprefixer:prefixFile', |
|
||||
|
|
||||
// creates minified js of modified file if it is js
|
|
||||
'newer:uglify:minifyOutput', |
|
||||
|
|
||||
// creates minified css of modified file if it is css
|
|
||||
'newer:cssmin:minifyOutput', |
|
||||
|
|
||||
// create concatenated css release if modified file is css
|
|
||||
'newer:concat:createCSSPackage', |
|
||||
|
|
||||
// create concatenated js release if modified file is js
|
|
||||
'newer:concat:createJSPackage' |
|
||||
], |
|
||||
|
|
||||
resetTasks = [ |
|
||||
// clean build directory
|
|
||||
'clean:output' |
|
||||
], |
|
||||
|
|
||||
buildTasks = [ |
|
||||
// clean build directory
|
|
||||
'clean:output', |
|
||||
|
|
||||
// compiles less definitions
|
|
||||
'less:buildAll', |
|
||||
|
|
||||
// copy assets
|
|
||||
'copy:uncompressedAssets', |
|
||||
'copy:minifiedAssets', |
|
||||
'copy:packagedAssets', |
|
||||
|
|
||||
// copy javascript definitions
|
|
||||
'copy:javascript', |
|
||||
|
|
||||
// auto prefix all modified files
|
|
||||
'autoprefixer:prefixOutput', |
|
||||
|
|
||||
// creates minified js of each output file
|
|
||||
'uglify:minifyOutput', |
|
||||
|
|
||||
// creates minified css of each output file
|
|
||||
'cssmin:minifyOutput', |
|
||||
|
|
||||
// create concatenated css release
|
|
||||
'concat:createCSSPackage', |
|
||||
|
|
||||
// create concatenated js release
|
|
||||
'concat:createJSPackage' |
|
||||
], |
|
||||
|
|
||||
setWatchFiles = function(action, filePath) { |
|
||||
var |
|
||||
outputPath = filePath.replace(paths.source.definitions, paths.output.uncompressed + 'definitions/'), |
|
||||
regExp = new RegExp(paths.source.themes + '.*\/([^\/]*\/[^\/]*)\.(?:overrides|variables)$') |
|
||||
; |
|
||||
// convert backslashes to slashes for Windows compatibility
|
|
||||
if(process.platform === 'win32') { |
|
||||
filePath = filePath.replace(/\\/g, '/'); |
|
||||
} |
|
||||
// find relevant .less file for each modified .overrides or .variables file
|
|
||||
if(filePath.search(regExp) !== -1) { |
|
||||
filePath = filePath.replace(regExp, paths.source.definitions + '$1.less'); |
|
||||
} |
|
||||
// build less and prefix
|
|
||||
if(filePath.search('.less') !== -1) { |
|
||||
outputPath = outputPath.replace('less', 'css'); |
|
||||
grunt.config('less.build.src', filePath); |
|
||||
grunt.config('less.build.dest', outputPath); |
|
||||
grunt.config('autoprefixer.prefixFile.src', outputPath); |
|
||||
} |
|
||||
// copy just the one js file
|
|
||||
else if(filePath.search('.js') !== -1) { |
|
||||
grunt.config('copy.file.src', filePath); |
|
||||
grunt.config('copy.file.dest', outputPath); |
|
||||
} |
|
||||
// do nothing
|
|
||||
else { |
|
||||
grunt.config('less.build.src', 'non/existant/path'); |
|
||||
grunt.config('less.build.dest', 'non/existant/path'); |
|
||||
grunt.config('autoprefixer.prefixFile.src', 'non/existant/path'); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// this allows filenames with multiple extensions to be preserved
|
|
||||
preserveFileExtensions = function(folder, filename) { |
|
||||
return folder + filename.substring(0, filename.lastIndexOf('.') ) + '.css'; |
|
||||
}, |
|
||||
preserveMinFileExtensions = function(folder, filename) { |
|
||||
return folder + filename.substring(0, filename.lastIndexOf('.') ) + '.min.css'; |
|
||||
}, |
|
||||
|
|
||||
config |
|
||||
; |
|
||||
|
|
||||
config = { |
|
||||
|
|
||||
site : site, |
|
||||
paths : site.paths, |
|
||||
|
|
||||
/******************************* |
|
||||
Watch |
|
||||
*******************************/ |
|
||||
|
|
||||
// watches for changes in a source folder
|
|
||||
watch: { |
|
||||
options: { |
|
||||
spawn: false |
|
||||
}, |
|
||||
src: { |
|
||||
files: [ |
|
||||
paths.source.definitions + '**/*.less', |
|
||||
paths.source.themes + '**/*.variables', |
|
||||
paths.source.themes + '**/*.overrides', |
|
||||
paths.source.definitions + '**/*.js' |
|
||||
], |
|
||||
tasks : watchTasks |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
/******************************* |
|
||||
Test |
|
||||
*******************************/ |
|
||||
|
|
||||
// Clear terminal output
|
|
||||
clear: { |
|
||||
terminal: {} |
|
||||
}, |
|
||||
|
|
||||
// Configured at run time
|
|
||||
copy: { |
|
||||
file: {}, |
|
||||
uncompressedAssets: { |
|
||||
expand: true, |
|
||||
cwd: paths.source.themes, |
|
||||
src : [ |
|
||||
[ |
|
||||
'**/assets/**/*' |
|
||||
] |
|
||||
], |
|
||||
dest : paths.output.uncompressed + '/themes' |
|
||||
}, |
|
||||
minifiedAssets: { |
|
||||
expand: true, |
|
||||
cwd: paths.source.themes, |
|
||||
src : [ |
|
||||
[ |
|
||||
'**/assets/**/*' |
|
||||
] |
|
||||
], |
|
||||
dest : paths.output.minified + '/themes' |
|
||||
}, |
|
||||
packagedAssets: { |
|
||||
expand: true, |
|
||||
cwd: paths.source.themes, |
|
||||
src : [ |
|
||||
[ |
|
||||
'**/assets/**/*' |
|
||||
] |
|
||||
], |
|
||||
dest : paths.output.packaged + '/themes' |
|
||||
}, |
|
||||
javascript: { |
|
||||
expand : true, |
|
||||
cwd : paths.source.definitions, |
|
||||
src : ['**/*.js'], |
|
||||
dest : paths.output.uncompressed + '/definitions/' |
|
||||
} |
|
||||
}, |
|
||||
less: { |
|
||||
options: { |
|
||||
paths : ['src'], |
|
||||
compress : false, |
|
||||
optimization : 2 |
|
||||
}, |
|
||||
build: { |
|
||||
rename : preserveFileExtensions |
|
||||
}, |
|
||||
buildAll: { |
|
||||
expand : true, |
|
||||
cwd : paths.source.definitions, |
|
||||
src : ['**/*.less'], |
|
||||
dest : paths.output.uncompressed + '/definitions/', |
|
||||
rename : preserveFileExtensions |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// Clean a folder
|
|
||||
clean: { |
|
||||
options: { |
|
||||
force: true |
|
||||
}, |
|
||||
output : [ |
|
||||
paths.output.uncompressed, |
|
||||
paths.output.minified, |
|
||||
paths.output.packaged |
|
||||
] |
|
||||
}, |
|
||||
|
|
||||
// Prefix
|
|
||||
autoprefixer: { |
|
||||
options: { |
|
||||
browsers: site.support |
|
||||
}, |
|
||||
prefixOutput: { |
|
||||
expand : true, |
|
||||
cwd : paths.output.uncompressed, |
|
||||
dest : paths.output.uncompressed, |
|
||||
src : [ |
|
||||
'**/*.css' |
|
||||
] |
|
||||
}, |
|
||||
prefixFile: { |
|
||||
src : paths.output.uncompressed + '**/*.css' |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// Minify
|
|
||||
cssmin: { |
|
||||
options : { |
|
||||
keepSpecialComments: 0, |
|
||||
report: 'min', |
|
||||
banner : '' + |
|
||||
'/*\n' + |
|
||||
'* # Semantic UI ' + |
|
||||
'* http://github.com/semantic-org/semantic-ui\n' + |
|
||||
'*\n' + |
|
||||
'* Copyright <%= grunt.template.today("yyyy") %> \n' + |
|
||||
'* Built: <%= grunt.template.today("mm/dd/yyyy") %>\n' + |
|
||||
'*/\n' |
|
||||
}, |
|
||||
minifyOutput: { |
|
||||
expand : true, |
|
||||
cwd : paths.output.uncompressed, |
|
||||
src : [ |
|
||||
'**/*.css' |
|
||||
], |
|
||||
dest : paths.output.minified, |
|
||||
rename : preserveMinFileExtensions |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
// Minify JS
|
|
||||
uglify: { |
|
||||
|
|
||||
minifyOutput: { |
|
||||
expand : true, |
|
||||
cwd : paths.output.uncompressed, |
|
||||
src : [ |
|
||||
'**/*.js' |
|
||||
], |
|
||||
dest : paths.output.minified, |
|
||||
ext : '.min.js', |
|
||||
banner : '' + |
|
||||
'/*' + |
|
||||
'* # Semantic UI\n' + |
|
||||
'* http://github.com/semantic-org/semantic-ui\n' + |
|
||||
'*\n' + |
|
||||
'* Copyright <%= grunt.template.today("yyyy") %> Contributors\n' + |
|
||||
'*\n' + |
|
||||
'* Build Date: <%= grunt.template.today("mm/dd/yyyy") %>\n' + |
|
||||
'*/\n' |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
concat: { |
|
||||
options: { |
|
||||
}, |
|
||||
createCSSPackage: { |
|
||||
src: [ paths.output.minified + '**/*.css'], |
|
||||
dest: paths.output.packaged + 'definitions/css/semantic.css' |
|
||||
}, |
|
||||
createJSPackage: { |
|
||||
src: [ paths.output.minified + '**/*.js'], |
|
||||
dest: paths.output.packaged + 'definitions/js/semantic.js' |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
}; |
|
||||
|
|
||||
// filesys & terminal
|
|
||||
grunt.loadNpmTasks('grunt-contrib-clean'); |
|
||||
grunt.loadNpmTasks('grunt-contrib-watch'); |
|
||||
grunt.loadNpmTasks('grunt-contrib-copy'); |
|
||||
grunt.loadNpmTasks('grunt-clear'); |
|
||||
grunt.loadNpmTasks('grunt-contrib-concat'); |
|
||||
grunt.loadNpmTasks('grunt-newer'); |
|
||||
|
|
||||
// css
|
|
||||
grunt.loadNpmTasks('grunt-contrib-cssmin'); |
|
||||
grunt.loadNpmTasks('grunt-contrib-less'); |
|
||||
grunt.loadNpmTasks('grunt-autoprefixer'); |
|
||||
|
|
||||
// javascript
|
|
||||
grunt.loadNpmTasks('grunt-contrib-uglify'); |
|
||||
|
|
||||
grunt.initConfig(config); |
|
||||
grunt.registerTask('default', defaultTasks); |
|
||||
grunt.registerTask('build', buildTasks); |
|
||||
grunt.registerTask('reset', resetTasks); |
|
||||
|
|
||||
// compiles only changed less files <https://npmjs.org/package/grunt-contrib-watch>
|
|
||||
grunt.event.on('watch', setWatchFiles); |
|
||||
|
|
||||
}; |
|
@ -1,3 +1,5 @@ |
|||||
/*------------------- |
/*------------------- |
||||
Icon Variables |
Icon Variables |
||||
--------------------*/ |
--------------------*/ |
||||
|
|
||||
|
@fontPath : "../../themes/basic/assets/fonts"; |
Write
Preview
Loading…
Cancel
Save