Skip to content
Snippets Groups Projects
Commit d4d40404 authored by Ryan Dee's avatar Ryan Dee
Browse files

Update Grunt tasks (Less → Sass)

- Remove Less tasks
- Add Sass tasks
- Begin work on importing DCF mixins (temporarily commented out)
parent 18520aa4
No related branches found
No related tags found
No related merge requests found
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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment