You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte/src/server-side-rendering/register.js

35 lines
787 B

import * as fs from 'fs';
import * as path from 'path';
import { compile } from '../index.ts';
function capitalise(name) {
return name[0].toUpperCase() + name.slice(1);
}
export default function register(options) {
const { extensions } = options;
if (extensions) {
_deregister('.html');
extensions.forEach(_register);
}
}
function _deregister(extension) {
delete require.extensions[extension];
}
function _register(extension) {
require.extensions[extension] = function(module, filename) {
const {code} = compile(fs.readFileSync(filename, 'utf-8'), {
filename,
name: capitalise(path.basename(filename)
.replace(new RegExp(`${extension.replace('.', '\\.')}$`), '')),
generate: 'ssr',
});
return module._compile(code, filename);
};
}
_register('.html');