sass-resources-loader
Version:
SASS resources loader for Webpack
80 lines (54 loc) • 2.89 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = _default;
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var _async = _interopRequireDefault(require("async"));
var _getOptions = _interopRequireDefault(require("./utils/getOptions"));
var _processResources = _interopRequireDefault(require("./utils/processResources"));
var _expandResourceGlobs = _interopRequireDefault(require("./utils/expandResourceGlobs"));
var _rewritePaths = _interopRequireDefault(require("./utils/rewritePaths"));
var _logger = _interopRequireDefault(require("./utils/logger"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/* eslint func-names: 0 */
function _default(source) {
var webpack = this;
if (webpack.cacheable) webpack.cacheable();
var callback = webpack.async(); // eslint-disable-next-line no-underscore-dangle
global.__DEBUG__ = process.env.DEBUG === 'sass-resources-loader' || process.env.DEBUG === '*';
_logger["default"].debug('Hey, we\'re in DEBUG mode! Yabba dabba doo!');
var options = (0, _getOptions["default"])(this);
var resourcesFromConfig = options.resources;
if (!resourcesFromConfig) {
var error = new Error('Can\'t find sass resources in your config. Make sure loader.options.resources exists');
return callback(error);
}
var resourcesLocations = (0, _expandResourceGlobs["default"])(resourcesFromConfig);
var moduleContext = webpack.context;
var webpackConfigContext = webpack.rootContext || webpack.options && webpack.options.context || process.cwd();
if (!webpack.rootContext && !webpack.options && !webpack.options.context) {
_logger["default"].debug('`options.context` is missing. Using current working directory as a root instead:', process.cwd());
}
_logger["default"].debug('Module context:', moduleContext);
_logger["default"].debug('Webpack config context:', webpackConfigContext);
_logger["default"].debug('Resources:', resourcesLocations);
if (!resourcesLocations.length) {
var _error = new Error("\n Something wrong with provided resources.\n Make sure 'options.resources' is String or Array of Strings with a valid file path.\n ");
return callback(_error);
}
var files = resourcesLocations.map(function (resource) {
var file = _path["default"].resolve(webpackConfigContext, resource);
webpack.addDependency(file);
return file;
});
_async["default"].map(files, function (file, cb) {
_fs["default"].readFile(file, 'utf8', function (error, contents) {
(0, _rewritePaths["default"])(error, file, contents, moduleContext, cb);
});
}, function (error, resources) {
(0, _processResources["default"])(error, resources, source, options, moduleContext, callback);
});
return undefined;
}
;