/
_config.js
38 lines (37 loc) · 1.08 KB
/
_config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const fs = require('fs');
const path = require('path');
const assert = require('assert');
module.exports = {
description: 'supports emitting assets from plugin hooks',
options: {
plugins: {
resolveId(id, importee) {
if (id.endsWith('.svg')) {
return path.resolve(path.dirname(importee), id);
}
},
load(id) {
if (id.endsWith('.svg')) {
return `export default import.meta.ROLLUP_FILE_URL_${this.emitFile({
type: 'asset',
name: path.basename(id),
source: fs.readFileSync(id)
})};`;
}
},
generateBundle(options, outputBundle) {
const keys = Object.keys(outputBundle);
assert.strictEqual(keys.length, 2);
assert.strictEqual(keys[0], 'assets/logo-25585ac1.svg');
const asset = outputBundle[keys[0]];
assert.strictEqual(asset.fileName, 'assets/logo-25585ac1.svg');
assert.strictEqual(asset.type, 'asset');
assert.ok(
asset.source.equals(fs.readFileSync(path.resolve(__dirname, 'logo.svg'))),
'asset has correct source'
);
assert.ok(keys[1].endsWith('.js'), `${keys[1]} ends with ".js"`);
}
}
}
};