|
1 | | -var svg = require('svgo'); |
2 | | -var loaderUtils = require('loader-utils'); |
3 | | -var compiler = require('vue-template-compiler'); |
| 1 | +const svg = require('svgo'); |
| 2 | +const loaderUtils = require('loader-utils'); |
| 3 | +const compiler = require('vue-template-compiler'); |
4 | 4 |
|
5 | 5 | module.exports = function (content) { |
6 | | - var options = loaderUtils.getOptions(this) || {}; |
7 | | - var svgoOptions = options.svgo || { |
8 | | - plugins: [{removeDoctype: true}, {removeComments: true}], |
9 | | - }; |
10 | | - var svgo = new svg(svgoOptions); |
| 6 | + const options = loaderUtils.getOptions(this) || {}; |
| 7 | + const query = loaderUtils.parseQuery(this.resourceQuery || '?'); |
| 8 | + const svgo = new svg(options.svgo || { |
| 9 | + plugins: [{ removeDoctype: true }, { removeComments: true }], |
| 10 | + }); |
11 | 11 |
|
12 | 12 | this.cacheable && this.cacheable(true); |
13 | 13 | this.addDependency(this.resourcePath); |
14 | 14 |
|
15 | | - var cb = this.async(); |
| 15 | + const cb = this.async(); |
16 | 16 |
|
17 | | - svgo.optimize(content, function (result) { |
| 17 | + svgo.optimize(content, (result) => { |
18 | 18 | if (result.error) { |
19 | 19 | return cb(result.error); |
20 | 20 | } |
21 | | - |
22 | | - var compiled = compiler.compile(result.data, {preserveWhitespace: false}); |
23 | | - cb(null, "module.exports = {render: function () {" + compiled.render + "}};"); |
| 21 | + |
| 22 | + const compiled = compiler.compile(result.data, { preserveWhitespace: false }); |
| 23 | + let component = `render: function () {${compiled.render}}`; |
| 24 | + |
| 25 | + if (options.includePath || query.includePath) { |
| 26 | + const filename = loaderUtils.interpolateName(this, '[path][name].[ext]', { context: this.options.context }); |
| 27 | + component = `${component}, path:${JSON.stringify(filename)}`; |
| 28 | + } |
| 29 | + |
| 30 | + cb(null, `module.exports = {${component}};`); |
24 | 31 | }); |
25 | 32 | }; |
0 commit comments