diff --git a/Gruntfile.js b/Gruntfile.js index 3aca2de9f1227a5e42a05a769ca27f80edc30b78..cf7f5564bcd7462a3a870bd3fc9dbf5f1ae008ba 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,9 +1,10 @@ var every = require('lodash/collection/every'); var fs = require('fs'); +const sass = require('node-sass'); module.exports = function (grunt) { - var lessDir = 'www/less'; - var lessVendorDir = lessDir + '/lib'; + var sassDir = 'www/scss'; +// var sassVendorDir = sassDir + '/mixins'; var cssDir = 'www/css'; var jsDir = 'www/js'; @@ -16,51 +17,70 @@ module.exports = function (grunt) { jsDir + '/search.js', ]; - var wdnMixinLibBaseUrl = 'https://raw.githubusercontent.com/unl/wdntemplates/4.1/wdn/templates_4.1/less/_mixins/'; - var wdnMixins = [ - 'breakpoints.less', - 'colors.less', - 'fonts.less', - ]; - var allMixinsExist = every(wdnMixins, function(value) { - return fs.existsSync(lessVendorDir + '/' + value); - }); +// TODO: Import DCF and UNLedu 5.0 mixins and variables +// var dcfMixinLibBaseUrl = 'https://raw.githubusercontent.com/d-c-n/dcf/master/assets/dist/scss/mixins/'; +// var dcfMixins = [ +// '_mixins.backgrounds.scss', +// '_mixins.margins.scss', +// '_mixins.padding.scss', +// '_mixins.typography.scss' +// ]; +// var allMixinsExist = every(dcfMixins, function(value) { +// return fs.existsSync(sassVendorDir + '/' + value); +// }); - var lessFiles = {}; + var sassFiles = {}; cssFiles.forEach(function(file) { - lessFiles[cssDir + '/' + file + '.css'] = lessDir + '/' + file + '.less'; + sassFiles[cssDir + '/' + file + '.css'] = sassDir + '/' + file + '.scss'; }); var builtJsFiles = {}; builtJsFiles[jsDir + '/search.min.js'] = jsFiles; - var autoprefixPlugin = new (require('less-plugin-autoprefix'))({browsers: ["last 2 versions"]}); - var cleanCssPlugin = new (require('less-plugin-clean-css'))(); +// var autoprefixPlugin = new (require('less-plugin-autoprefix'))({browsers: ["last 2 versions"]}); +// var cleanCssPlugin = new (require('less-plugin-clean-css'))(); // load all grunt tasks matching the ['grunt-*', '@*/grunt-*'] patterns require('load-grunt-tasks')(grunt); grunt.initConfig({ - 'curl-dir': { - 'less-libs': { - src: wdnMixins.map(function(file) { - return wdnMixinLibBaseUrl + file; - }), - dest: lessVendorDir - } - }, - less: { - all: { - options: { - paths: [lessDir], - plugins: [ - autoprefixPlugin, - cleanCssPlugin - ] - }, - files: lessFiles - } + +// 'curl-dir': { +// 'dcf-mixins': { +// src: dcfMixins.map(function(file) { +// return dcfMixinLibBaseUrl + file; +// }), +// dest: sassVendorDir +// } +// // TODO: add UNLedu 5.0 mixins +// }, + + sass: { + all: { + files: sassFiles, + options: { + implementation: sass, + sourceMap: true +// includePaths: [ +// __dirname+'/node_modules/modularscale-sass/stylesheets' +// ] + } + }, }, + + postcss: { + options: { + processors: [ + require('autoprefixer'), + require('cssnano')() // TODO: advanced config of cssnano + ], + map: true + }, + dist: { + src: cssDir + '/*.css' + } + }, + uglify: { options: { sourceMap: true @@ -69,6 +89,7 @@ module.exports = function (grunt) { files: builtJsFiles } }, + requirejs: { all: { options: { @@ -98,24 +119,28 @@ module.exports = function (grunt) { } } }, + clean: { - css: Object.keys(lessFiles).concat(lessVendorDir), +// css: Object.keys(sassFiles).concat(sassVendorDir), + css: Object.keys(sassFiles), js: Object.keys(builtJsFiles).concat(jsDir + '/**/*.map') }, + watch: { - less: { - files: lessDir + '/**/*.less', - tasks: ['less'] + sass: { + files: sassDir + '/**/*.scss', + tasks: ['sass', 'postcss'] } } + }); // establish grunt default - var defaultTasks = ['less', 'uglify', 'requirejs']; + var defaultTasks = ['sass', 'postcss', 'uglify', 'requirejs']; var localTasks = defaultTasks.slice(); - if (!allMixinsExist) { - defaultTasks.unshift('curl-dir'); - } +// if (!allMixinsExist) { +// defaultTasks.unshift('curl-dir'); +// } grunt.registerTask('default', defaultTasks); grunt.registerTask('all-local', localTasks);