UNPKG

@wjunt/webpack-config

Version:

Presets of webpack config

80 lines (79 loc) 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const webpackMerge = require("webpack-merge"); const node_logger_1 = require("@wjunt/node-logger"); const lodash_1 = require("lodash"); const path = require("path"); const util_1 = require("util"); const __1 = require(".."); const externals_1 = require("../config/externals"); function isDevelopment() { return typeof process.env.NODE_ENV === 'undefined' ? false : /^develop(ment)?$/.test(process.env.NODE_ENV); } exports.isDevelopment = isDevelopment; /** * Smartly merge webpack configuration. Basic configuration is merged by default. * @param configs * @example * // Support TypeScript and CSS. * module.exports = merge({ * css(), * ts(), * { ...others }, * }); */ function merge(...configs) { let config = webpackMerge.smart(__1.base(), ...configs); config.externals = externals_1.mergeExternals(externals_1.getExternals(config.output.libraryTarget), ...configs.map((config) => config.externals)); config.plugins = lodash_1.uniqBy(config.plugins, (plugin) => plugin.constructor && plugin.constructor.name); node_logger_1.default.getLogger('fwc').debug(`Merged webpack configuration: ${util_1.inspect(config, { depth: null, colors: true })}`); return config; } exports.merge = merge; function checkDependency(name) { try { if (require.resolve(name)) { return; } } catch (_) { } try { if (require.resolve(name, { paths: [path.resolve('node_modules')] })) { return; } } catch (_) { } throw new Error(`Required dependency "${name}" is not installed`); } exports.checkDependency = checkDependency; /** * Return paths to help webpack resolve modules or loaders. * @param request - Start point to find paths. * @private */ function getResolveModules(request) { let modules = [ 'node_modules', ]; if (typeof require.resolve.paths === 'undefined') { node_logger_1.default.getLogger('fwc').warn('Please upgrade `@wjunt/fd-cli` to avoid potential issues'); return modules.concat(path.join(request, 'node_modules')); } const paths = require.resolve.paths(request); if (paths) { modules = modules.concat(paths); } return modules; } exports.getResolveModules = getResolveModules; /** * This function doesn't really "do anything" at runtime, it's just the identity function for typing. * @param config */ function createWebpackConfiguration(config) { return config; } exports.createWebpackConfiguration = createWebpackConfiguration;