UNPKG

@zohodesk/client_build_tool

Version:

A CLI tool to build web applications and client libraries

64 lines (48 loc) 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.configCopyPublicFolders = configCopyPublicFolders; var _path = _interopRequireDefault(require("path")); var _copyWebpackPlugin = _interopRequireDefault(require("copy-webpack-plugin")); var _fs = require("fs"); var _updateArrayWithDefault = require("../utils/updateArrayWithDefault"); var _constants = require("../../../constants"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const defaultPublicFolders = [{ // source must be relative path not absolute path source: 'public', // target is the path that this copied file output path target: 'public', toType: 'dir' }]; function folderPatterns(publicFolders) { return publicFolders.map(conf => { const publicFolderActualPath = (0, _constants.joinWithAppPath)(conf.source); if (!conf.source || !conf.target || _path.default.isAbsolute(conf.source) || !(0, _fs.existsSync)(publicFolderActualPath)) { return null; } return { from: publicFolderActualPath, to: conf.target, toType: conf.toType || 'dir' }; }).filter(Boolean); } function configCopyPublicFolders(options) { let { publicFolders, mode = 'dev' } = options; publicFolders = (0, _updateArrayWithDefault.updateArrayWithDefault)(publicFolders[mode], defaultPublicFolders); if (publicFolders.length === 0) { return null; } const patterns = folderPatterns(publicFolders); if (patterns.length === 0) { return null; } return new _copyWebpackPlugin.default({ patterns }); }