Gruntfile.js
Rama develop · réplica de lectura del repositorio original.
"use strict";
module.exports = function(grunt) {
const sass = require("sass");
// Load grunt tasks automatically
require("load-grunt-tasks")(grunt);
// MODULES
grunt.initConfig({
clean: {
basic: [
"assets/**/*.css",
"assets/**/*.css.map",
"!assets/core/css/custom.css",
"!assets/core/css/custom-pdf.css", // CSS
"!assets/core/css/paypal.css", // CSS
"assets/core/js/*.js",
"!assets/core/js/scripts.js",
"!assets/core/js/jquery-ui.js", // JS
"!assets/core/js/paypal.js", // JS
"assets/core/fonts/*",
"!assets/core/fonts/.gitignore" // Fonts
],
build: ["assets/default/js/dependencies.js", "assets/default/js/legacy.js"]
},
sass: {
dev: {
options: {
implementation: sass,
outputStyle: "expanded",
sourceMap: true
},
files: grunt.file.expandMapping(["assets/**/sass/*.scss"], "css", {
rename: function(dest, matched) {
return matched.replace(/\/sass\//, "/" + dest + "/").replace(/\.scss$/, ".css");
}
})
},
build: {
options: {
implementation: sass,
outputStyle: "compressed"
},
files: grunt.file.expandMapping(["assets/**/sass/*.scss"], "css", {
rename: function(dest, matched) {
return matched.replace(/\/sass\//, "/" + dest + "/").replace(/\.scss$/, ".css");
}
})
}
},
postcss: {
dev: {
options: {
map: true,
processors: [require("autoprefixer")]
},
src: ["assets/**/css/*.css", "!assets/core/css/custom.css", "!assets/core/css/custom-pdf.css"]
},
build: {
options: {
map: false,
processors: [require("autoprefixer")]
},
src: ["assets/**/css/*.css", "!assets/core/css/custom.css", "!assets/core/css/custom-pdf.css"]
}
},
concat: {
legacy: {
src: ["node_modules/html5shiv/dist/html5shiv.js"],
dest: "assets/core/js/legacy.js"
},
dependencies: {
src: [
"node_modules/jquery/dist/jquery.js",
"node_modules/js-cookie/src/js.cookie.js",
"assets/core/js/jquery-ui.js",
"node_modules/bootstrap-sass/assets/javascripts/bootstrap.js",
"node_modules/bootstrap-datepicker/js/bootstrap-datepicker.js",
"node_modules/select2/dist/js/select2.full.js",
"node_modules/dropzone/dist/dropzone.js",
"node_modules/clipboard/dist/clipboard.js"
],
dest: "assets/core/js/dependencies.js"
},
zxcvbn: {
src: ["node_modules/zxcvbn/dist/zxcvbn.js"],
dest: "assets/core/js/zxcvbn.js"
}
},
uglify: {
build: {
files: {
"assets/core/js/legacy.min.js": ["assets/core/js/legacy.js"],
"assets/core/js/dependencies.min.js": ["assets/core/js/dependencies.js"],
"assets/core/js/scripts.min.js": ["assets/core/js/scripts.js"]
}
}
},
copy: {
datepickerlocale: {
expand: true,
flatten: true,
src: ["node_modules/bootstrap-datepicker/js/locales/**"],
dest: "assets/core/js/locales/",
filter: "isFile"
},
select2locale: {
expand: true,
flatten: true,
src: ["node_modules/select2/dist/js/i18n/**"],
dest: "assets/core/js/locales/select2/",
filter: "isFile"
},
fontawesome: {
expand: true,
flatten: true,
src: ["node_modules/font-awesome/fonts/*"],
dest: "assets/core/fonts"
},
devjs: {
files: [
{
cwd: "assets/core/js/",
src: ["*.js", "!jquery-ui.js"],
dest: "assets/core/js/",
expand: true,
rename: function(dest, src) {
return (dest + src).replace(".js", ".min.js");
}
}
]
}
},
watch: {
sass: {
files: "assets/**/*.scss",
tasks: ["sass:dev", "postcss:dev"]
},
js: {
files: "assets/core/js/scripts.js",
tasks: ["uglify"]
}
}
});
// TASKS
grunt.registerTask("default", "build");
grunt.registerTask("dev-build", [
"clean:basic",
"sass:dev",
"postcss:dev",
"concat:legacy",
"concat:dependencies",
"concat:zxcvbn",
"copy:datepickerlocale",
"copy:select2locale",
"copy:fontawesome",
"copy:devjs"
]);
grunt.registerTask("dev", [
"clean:basic",
"sass:dev",
"postcss:dev",
"concat:legacy",
"concat:dependencies",
"concat:zxcvbn",
"copy:datepickerlocale",
"copy:select2locale",
"copy:fontawesome",
"copy:devjs",
"watch"
]);
grunt.registerTask("build", [
"clean:basic",
"sass:build",
"postcss:build",
"concat:legacy",
"concat:dependencies",
"concat:zxcvbn",
"uglify:build",
"clean:build",
"copy:datepickerlocale",
"copy:select2locale",
"copy:fontawesome"
]);
};