diff --git a/build/tasks/concats.js b/build/tasks/concats.js index d83bed0..a7e4811 100644 --- a/build/tasks/concats.js +++ b/build/tasks/concats.js @@ -6,15 +6,47 @@ import template from '../utils/template.js'; import concat from 'concat'; import { basename } from 'node:path'; +/** + * @const {object} defaultGlobOptions - The default shared glob options. + * @const {object} developmentGlobOptions - The predefined glob options for development. + * @const {object} productionGlobOptions - The predefined glob options for production. + */ +export const defaultGlobOptions = { +}; +export const developmentGlobOptions = Object.assign({}, defaultGlobOptions); +export const productionGlobOptions = Object.assign({}, defaultGlobOptions); + +/** + * @const {object} developmentConcatFilesArgs - The predefined `concatFiles()` options for development. + * @const {object} productionConcatFilesArgs - The predefined `concatFiles()` options for production. + */ +export const developmentConcatFilesArgs = [ + developmentGlobOptions, +]; +export const productionConcatFilesArgs = [ + productionGlobOptions, +]; + /** * Concatenates groups of files. * * @todo Add support for minification. * * @async + * @param {object} [globOptions=null] - Customize the glob options. + * If `null`, default production options are used. * @return {Promise} */ -export default async function concatFiles() { +export default async function concatFiles(globOptions = null) { + if (globOptions == null) { + globOptions = productionGlobOptions; + } else if ( + globOptions !== developmentGlobOptions && + globOptions !== productionGlobOptions + ) { + globOptions = Object.assign({}, defaultGlobOptions, globOptions); + } + loconfig.tasks.concats.forEach(async ({ includes, outfile, @@ -31,7 +63,7 @@ export default async function concatFiles() { includes = includes.map((path) => template(path)); outfile = template(outfile); - const files = await glob(includes); + const files = await glob(includes, globOptions); await concat(files, outfile); diff --git a/build/watch.js b/build/watch.js index 3a0a0b2..ef2f6c6 100644 --- a/build/watch.js +++ b/build/watch.js @@ -1,5 +1,5 @@ import loconfig from '../loconfig.json'; -import concatFiles from './tasks/concats.js'; +import concatFiles, { developmentConcatFilesArgs } from './tasks/concats.js'; import compileScripts, { developmentScriptsArgs } from './tasks/scripts.js'; import compileStyles, { developmentStylesArgs } from './tasks/styles.js' ; import compileSVGs, { developmentSVGsArgs } from './tasks/svgs.js'; @@ -45,7 +45,7 @@ server.init(serverConfig); // Build scripts, compile styles, concat files, // and generate spritesheets on first hit -concatFiles(); +concatFiles(...developmentConcatFilesArgs); compileScripts(...developmentScriptsArgs); compileStyles(...developmentStylesArgs); compileSVGs(...developmentSVGsArgs); @@ -76,7 +76,7 @@ server.watch( [] ).map((path) => template(path)) ).on('change', () => { - concatFiles(); + concatFiles(...developmentConcatFilesArgs); }); // Watch source styles