-
-
Notifications
You must be signed in to change notification settings - Fork 288
/
compile_svelte.js
36 lines (31 loc) · 1.22 KB
/
compile_svelte.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
/**
* Svelte Components work best when used with a packaging system like WebpackEncore.
*
* However, you *can* compile the .svelte files to .js files and use them directly.
*/
const fs = require('fs');
const path = require('path');
const { compile } = require('svelte/compiler');
function compileDirectory(inputDir, outputDir) {
const files = fs.readdirSync(inputDir);
for (const file of files) {
const inputFile = path.join(inputDir, file);
const stats = fs.statSync(inputFile);
if (stats.isDirectory()) {
const newOutputDir = path.join(outputDir, file);
if (!fs.existsSync(newOutputDir)) {
fs.mkdirSync(newOutputDir);
}
compileDirectory(inputFile, newOutputDir);
} else if (path.extname(file) === '.svelte') {
const input = fs.readFileSync(inputFile, 'utf-8');
const output = compile(input, { format: 'esm' });
const outputFile = path.join(outputDir, `${path.basename(file, '.svelte')}.js`);
fs.writeFileSync(outputFile, output.js.code);
}
}
}
compileDirectory(
path.join(__dirname, '..', 'assets', 'svelte'),
path.join(__dirname, '..', 'assets', 'build', 'svelte'),
);