49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.formatRequest = exports.parseRequest = undefined;
|
|
exports.hook = hook;
|
|
|
|
var _path = require('path');
|
|
|
|
var _path2 = _interopRequireDefault(_path);
|
|
|
|
var _consts = require('./consts');
|
|
|
|
var _ = require('.');
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
const parseRequest = exports.parseRequest = requestStr => {
|
|
const parts = (requestStr || '').split('!');
|
|
|
|
const file = _path2.default.relative(process.cwd(), (0, _.removeAfter)('?', (0, _.removeBefore)(_consts.nodeModules, parts.pop())));
|
|
|
|
const loaders = parts.map(part => (0, _.firstMatch)(/[a-z0-9-@]+-loader/, part)).filter(_.hasValue);
|
|
|
|
return {
|
|
file: (0, _.hasValue)(file) ? file : null,
|
|
loaders
|
|
};
|
|
};
|
|
|
|
const formatRequest = exports.formatRequest = request => {
|
|
const loaders = request.loaders.join(_consts.NEXT);
|
|
|
|
if (!loaders.length) {
|
|
return request.file || '';
|
|
}
|
|
|
|
return `${loaders}${_consts.NEXT}${request.file}`;
|
|
};
|
|
|
|
// Hook helper for webpack 3 + 4 support
|
|
function hook(compiler, hookName, fn) {
|
|
if (compiler.hooks) {
|
|
compiler.hooks[hookName].tap('WebpackBar:' + hookName, fn);
|
|
} else {
|
|
compiler.plugin(hookName, fn);
|
|
}
|
|
} |