UNPKG

generator-confit

Version:

Yeoman generator for creating the development process, tools and a sample project for current-generation web applications

96 lines (70 loc) 2.02 kB
// Helper methods for Webpack configuration files 'use strict'; const path = require('path'); // Helper functions let ROOT = ''; const helpers = (rootPath) => { ROOT = rootPath; return { pathRegEx, removeHash, findLoader, getLoaderQueryStr, hasLoader, hasProcessFlag, isWebpackDevServer, root } }; module.exports = helpers; // Convert a Linux/OSX path expression inside a RegEx into a platform-specific expressions function pathRegEx(regEx) { const sep = escapeStrRegEx(path.sep); if (typeof regEx === 'string') { return regEx.replace(/\//g, sep); } return new RegExp(regEx.source.replace(/\\\//g, sep)); } function escapeStrRegEx(text) { return text.replace(/[-[\]/{}()*+?.,\\^$|#\s]/g, '\\$&'); } function removeHash(parentObj, prop, regExMatcher) { let value = parentObj[prop]; let matcher = regExMatcher || /\[(contentHash|hash).*?\]/; parentObj[prop] = value.replace(matcher, ''); } function findLoader(config, loaderName) { return config.module.rules.find(rule => hasLoader(rule, loaderName)); } function getLoaderQueryStr(loaderName, optionsObj) { if (!loaderName) return ''; var optionsArr = []; for (var key in optionsObj) { optionsArr.push(key + '=' + optionsObj[key]); } var optionStr = optionsArr.join('&'); if (optionStr) { optionStr = '?' + optionStr; } return '!' + loaderName + optionStr; } // For a rule, determine if it has a loader that matches loaderName function hasLoader(rule, loaderName) { if (!rule.use) { return false; } let matchingLoaders = rule.use.find(function(loader) { return loader.loader === loaderName; }); return !!matchingLoaders; } function hasProcessFlag(flag) { return process.argv.join('').indexOf(flag) > -1; } function isWebpackDevServer() { return process.argv[1] && !! (/webpack-dev-server/.exec(process.argv[1])); } function root(args) { args = Array.prototype.slice.call(arguments, 0); return path.join.apply(path, [ROOT].concat(args)); }