You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.9 KiB
58 lines
1.9 KiB
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = processPattern;
|
|
|
|
var _path = _interopRequireDefault(require("path"));
|
|
|
|
var _globby = _interopRequireDefault(require("globby"));
|
|
|
|
var _createPatternGlob = _interopRequireDefault(require("./utils/createPatternGlob"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
async function processPattern(globalRef, pattern) {
|
|
const {
|
|
logger,
|
|
output,
|
|
compilation
|
|
} = globalRef;
|
|
(0, _createPatternGlob.default)(pattern, globalRef);
|
|
logger.log(`begin globbing '${pattern.glob}' with a context of '${pattern.context}'`);
|
|
const paths = await (0, _globby.default)(pattern.glob, pattern.globOptions);
|
|
|
|
if (paths.length === 0) {
|
|
if (pattern.noErrorOnMissing) {
|
|
return Promise.resolve();
|
|
}
|
|
|
|
const missingError = new Error(`unable to locate '${pattern.from}' at '${pattern.absoluteFrom}'`);
|
|
logger.error(missingError.message);
|
|
compilation.errors.push(missingError);
|
|
return Promise.resolve();
|
|
}
|
|
|
|
return paths // Exclude directories
|
|
.filter(item => item.dirent.isFile()).map(item => {
|
|
const from = item.path;
|
|
logger.debug(`found ${from}`); // `globby`/`fast-glob` return the relative path when the path contains special characters on windows
|
|
|
|
const absoluteFrom = _path.default.resolve(pattern.context, from);
|
|
|
|
const relativeFrom = pattern.flatten ? _path.default.basename(absoluteFrom) : _path.default.relative(pattern.context, absoluteFrom);
|
|
let webpackTo = pattern.toType === 'dir' ? _path.default.join(pattern.to, relativeFrom) : pattern.to;
|
|
|
|
if (_path.default.isAbsolute(webpackTo)) {
|
|
webpackTo = _path.default.relative(output, webpackTo);
|
|
}
|
|
|
|
logger.log(`determined that '${from}' should write to '${webpackTo}'`);
|
|
return {
|
|
absoluteFrom,
|
|
relativeFrom,
|
|
webpackTo
|
|
};
|
|
});
|
|
} |