1 |
|
2 |
|
3 | 'use strict';
|
4 | const _ = require('lodash');
|
5 | const loaderUtils = require('loader-utils');
|
6 |
|
7 | module.exports = function (source) {
|
8 |
|
9 | const options = this.query !== '' ? loaderUtils.getOptions(this) : {};
|
10 | const force = options.force || false;
|
11 |
|
12 | const allLoadersButThisOne = this.loaders.filter(function (loader) {
|
13 | return loader.normal !== module.exports;
|
14 | });
|
15 |
|
16 | if (allLoadersButThisOne.length > 0 && !force) {
|
17 | return source;
|
18 | }
|
19 |
|
20 | if (/\.js$/.test(this.resourcePath) && !force) {
|
21 | return source;
|
22 | }
|
23 |
|
24 |
|
25 |
|
26 | const template = _.template(source, _.defaults(options, { interpolate: /<%=([\s\S]+?)%>/g, variable: 'data' }));
|
27 |
|
28 |
|
29 | return 'var _ = __non_webpack_require__(' + JSON.stringify(require.resolve('lodash')) + ');' +
|
30 | 'module.exports = function (templateParams) { with(templateParams) {' +
|
31 |
|
32 | 'return (' + template.source + ')();' +
|
33 | '}}';
|
34 | };
|