1 | const Asset = require('../Asset');
|
2 | const localRequire = require('../utils/localRequire');
|
3 |
|
4 | class CoffeeScriptAsset extends Asset {
|
5 | constructor(name, options) {
|
6 | super(name, options);
|
7 | this.type = 'js';
|
8 | }
|
9 |
|
10 | async generate() {
|
11 |
|
12 | let coffee = await localRequire('coffeescript', this.name);
|
13 |
|
14 |
|
15 | let transpiled = coffee.compile(this.contents, {
|
16 | sourceMap: this.options.sourceMaps
|
17 | });
|
18 |
|
19 | let sourceMap;
|
20 | if (transpiled.sourceMap) {
|
21 | sourceMap = transpiled.sourceMap.generate();
|
22 | sourceMap.sources = [this.relativeName];
|
23 | sourceMap.sourcesContent = [this.contents];
|
24 | }
|
25 |
|
26 | return [
|
27 | {
|
28 | type: 'js',
|
29 | value: this.options.sourceMaps ? transpiled.js : transpiled,
|
30 | sourceMap
|
31 | }
|
32 | ];
|
33 | }
|
34 | }
|
35 |
|
36 | module.exports = CoffeeScriptAsset;
|