1 | 'use strict';
|
2 |
|
3 | var _fs = require('fs');
|
4 |
|
5 | var _fs2 = _interopRequireDefault(_fs);
|
6 |
|
7 | var _path = require('path');
|
8 |
|
9 | var _path2 = _interopRequireDefault(_path);
|
10 |
|
11 | var _async = require('async');
|
12 |
|
13 | var _async2 = _interopRequireDefault(_async);
|
14 |
|
15 | var _loaderUtils = require('loader-utils');
|
16 |
|
17 | var _loaderUtils2 = _interopRequireDefault(_loaderUtils);
|
18 |
|
19 | var _processResources = require('./utils/processResources');
|
20 |
|
21 | var _processResources2 = _interopRequireDefault(_processResources);
|
22 |
|
23 | var _parseResources = require('./utils/parseResources');
|
24 |
|
25 | var _parseResources2 = _interopRequireDefault(_parseResources);
|
26 |
|
27 | var _rewriteImports = require('./utils/rewriteImports');
|
28 |
|
29 | var _rewriteImports2 = _interopRequireDefault(_rewriteImports);
|
30 |
|
31 | var _logger = require('./utils/logger');
|
32 |
|
33 | var _logger2 = _interopRequireDefault(_logger);
|
34 |
|
35 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
36 |
|
37 |
|
38 |
|
39 | module.exports = function (source) {
|
40 | var webpack = this;
|
41 |
|
42 | if (webpack.cacheable) webpack.cacheable();
|
43 |
|
44 | var callback = webpack.async();
|
45 |
|
46 | global.__DEBUG__ = process.env.DEBUG === 'sass-resources-loader' || process.env.DEBUG === '*';
|
47 |
|
48 | _logger2.default.debug('Hey, we\'re in DEBUG mode! Yabba dabba doo!');
|
49 |
|
50 |
|
51 | var isModernWebpack = webpack.version >= 2;
|
52 | var resourcesFromConfig = isModernWebpack ? (_loaderUtils2.default.getOptions(this) || {}).resources : webpack.options.sassResources;
|
53 |
|
54 | if (!resourcesFromConfig) {
|
55 | var error = new Error('\n Can\'t find sass resources in your config.\n Make sure ' + (isModernWebpack ? 'loader.options.resources' : 'webpackConfig.sassResources') + ' exists.\n ');
|
56 |
|
57 | return callback(error);
|
58 | }
|
59 |
|
60 | var resourcesLocations = (0, _parseResources2.default)(resourcesFromConfig);
|
61 | var moduleContext = webpack.context;
|
62 | var webpackConfigContext = webpack.rootContext || webpack.options && webpack.options.context || process.cwd();
|
63 |
|
64 | if (!webpack.rootContext && !webpack.options && !webpack.options.context) {
|
65 | _logger2.default.debug('`options.context` is missing. Using current working directory as a root instead:', process.cwd());
|
66 | }
|
67 |
|
68 | _logger2.default.debug('Module context:', moduleContext);
|
69 | _logger2.default.debug('Webpack config context:', webpackConfigContext);
|
70 | _logger2.default.debug('Resources:', resourcesLocations);
|
71 |
|
72 | if (!resourcesLocations.length) {
|
73 | var _error = new Error('\n Something wrong with provided resources.\n Make sure \'options.resources\' is String or Array of Strings.\n ');
|
74 |
|
75 | return callback(_error);
|
76 | }
|
77 |
|
78 | var files = resourcesLocations.map(function (resource) {
|
79 | var file = _path2.default.resolve(webpackConfigContext, resource);
|
80 | webpack.addDependency(file);
|
81 | return file;
|
82 | });
|
83 |
|
84 | _async2.default.map(files, function (file, cb) {
|
85 | _fs2.default.readFile(file, 'utf8', function (error, contents) {
|
86 | (0, _rewriteImports2.default)(error, file, contents, moduleContext, cb);
|
87 | });
|
88 | }, function (error, resources) {
|
89 | (0, _processResources2.default)(error, resources, source, moduleContext, callback);
|
90 | });
|
91 | }; |
\ | No newline at end of file |