67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
var _path = _interopRequireDefault(require("path"));
|
|
|
|
var _loaderUtils = require("loader-utils");
|
|
|
|
var _schemaUtils = _interopRequireDefault(require("schema-utils"));
|
|
|
|
var _options = _interopRequireDefault(require("./options.json"));
|
|
|
|
var _utils = require("./utils");
|
|
|
|
var _LessError = _interopRequireDefault(require("./LessError"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function lessLoader(source) {
|
|
const options = (0, _loaderUtils.getOptions)(this);
|
|
(0, _schemaUtils.default)(_options.default, options, {
|
|
name: 'Less Loader',
|
|
baseDataPath: 'options'
|
|
});
|
|
const callback = this.async();
|
|
const lessOptions = (0, _utils.getLessOptions)(this, options);
|
|
let data = source;
|
|
|
|
if (typeof options.prependData !== 'undefined') {
|
|
data = typeof options.prependData === 'function' ? `${options.prependData(this)}\n${data}` : `${options.prependData}\n${data}`;
|
|
}
|
|
|
|
if (typeof options.appendData !== 'undefined') {
|
|
data = typeof options.appendData === 'function' ? `${data}\n${options.appendData(this)}` : `${data}\n${options.appendData}`;
|
|
}
|
|
|
|
(0, _utils.getLessImplementation)(options.implementation).render(data, lessOptions).then(({
|
|
css,
|
|
map,
|
|
imports
|
|
}) => {
|
|
imports.forEach(item => {
|
|
if ((0, _utils.isUnsupportedUrl)(item)) {
|
|
return;
|
|
} // `less` return forward slashes on windows when `webpack` resolver return an absolute windows path in `WebpackFileManager`
|
|
// Ref: https://github.com/webpack-contrib/less-loader/issues/357
|
|
|
|
|
|
this.addDependency(_path.default.normalize(item));
|
|
});
|
|
callback(null, css, typeof map === 'string' ? JSON.parse(map) : map);
|
|
}).catch(lessError => {
|
|
if (lessError.filename) {
|
|
// `less` return forward slashes on windows when `webpack` resolver return an absolute windows path in `WebpackFileManager`
|
|
// Ref: https://github.com/webpack-contrib/less-loader/issues/357
|
|
this.addDependency(_path.default.normalize(lessError.filename));
|
|
}
|
|
|
|
callback(new _LessError.default(lessError));
|
|
});
|
|
}
|
|
|
|
var _default = lessLoader;
|
|
exports.default = _default; |