kulfon
Version:
Kulfon is a modern static site generator written in JavaScript.
58 lines (44 loc) • 1.65 kB
JavaScript
// Copyright 2019 Zaiste & contributors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
const chokidar = require('chokidar');
const path = require('path');
const colors = require('colors');
const { server: serve } = require('../core/server');
const { recompile, compileAll } = require('../core');
const { println } = require('./util');
const { version } = require('../package.json');
const debug = require('debug')('server');
async function server({ port, dir }) {
const kulfon = ` Kulfon `.bgRed.white.bold;
const v = ` ${version} `.bgWhite.black;
println(`${kulfon}${v}\n`);
await compileAll({ dir });
const watcher = chokidar.watch(dir, {
ignored: /[\/\\]\./,
persistent: true,
cwd: 'website'
});
watcher.on('change', recompile);
const app = serve
app.on('error', err => {
println('Error: '.red + err.message);
});
app.listen(port);
const url = `http://localhost:${port}`.bold.underline;
println(`\nYour website is ready at ${url}`);
}
module.exports = {
builder: _ =>
_.option('port', { alias: 'p', default: 3000 }).default('dir', '.'),
handler: server
};