UNPKG

kk-webpack-base--config

Version:

Webpack config for kk-webpack-base

79 lines (71 loc) 2.21 kB
const fs = require('fs'); const path = require('path'); const cwd = process.cwd(); const { config } = require('./webpack.project-config.js'); /** * Are we in development mode? */ const isProd = process.env.NODE_ENV === 'prod' || process.env.NODE_ENV === 'production'; const isDev = !isProd; /** * Create webpack aliases */ const createWebpackAliases = (aliases) => { const result = {}; for (const name in aliases) { result[name] = path.join(cwd, aliases[name]); } return result; }; const createWebpackEntrypoints = (filepath, fileExt) => { let entrypoints = {}; try { if (fs.existsSync(filepath)) { const files = fs.readdirSync(filepath); if (!(files.length > 0)) { console.warn(`No ${fileExt} files found in '${filepath}'.`); } files.forEach((file) => { const restrictedFileNames = ['index', 'twig-data']; const thisFileName = path.parse(file).name; const thisFileExt = path.extname(file).toLowerCase(); const noUnderscorePrefix = thisFileName.substring(0, 1) !== '_'; const notRestricted = !restrictedFileNames.includes(thisFileName); if (thisFileExt === fileExt && noUnderscorePrefix && notRestricted) { entrypoints[thisFileName] = `${filepath}/${file}`; } }); if (!(Object.keys(entrypoints).length > 0)) { console.log( `No additional ${fileExt} entrypoints found in '${filepath}...'` ); } else { const entrypointsTitle = fileExt + ' entrypoints'; const entrypointsTableOutput = Object.keys(entrypoints).map((ep) => ({ [entrypointsTitle]: ep, })); console.table(entrypointsTableOutput); } } } catch (err) { console.warn(`Could not create ${fileExt} entrypoints.`); } return entrypoints; }; const copyThingPattern = (thing, to = '') => ({ from: path.resolve(process.cwd(), config.sourcePath + thing), to: path.resolve(process.cwd(), config.publicPath + to), noErrorOnMissing: true, globOptions: { ignore: ['**/*.gitkeep'], }, }); // Export helpers module.exports = { isProd, isDev, createWebpackAliases, createWebpackEntrypoints, copyThingPattern, };