feat: change css + watcher
Signed-off-by: Cédric OLIVIER <olivier.cedric@gmail.com>
This commit is contained in:
@@ -9,9 +9,9 @@ const { startServer } = require('./lib/server');
|
||||
const { startWatcher } = require('./lib/watcher');
|
||||
|
||||
const argv = minimist(process.argv.slice(2), {
|
||||
alias: { o: 'output', p: 'port', w: 'watch', h: 'help' },
|
||||
alias: { o: 'output', p: 'port', w: 'watch', v: 'preview', h: 'help' },
|
||||
default: { port: 3000 },
|
||||
boolean: ['watch', 'help'],
|
||||
boolean: ['watch', 'preview', 'open', 'help'],
|
||||
});
|
||||
|
||||
if (argv.help) {
|
||||
@@ -20,13 +20,17 @@ Usage: md-render <fichier.md|dossier> [options]
|
||||
|
||||
Options:
|
||||
-w, --watch Surveille les modifications et recharge automatiquement
|
||||
-p, --port <port> Port du serveur en mode watch (défaut: 3000)
|
||||
-v, --preview Comme --watch, mais ouvre aussi le navigateur
|
||||
--open Ouvre le navigateur (combinable avec --watch)
|
||||
-p, --port <port> Port du serveur (défaut: 3000)
|
||||
-o, --output <dir> Dossier de sortie HTML (mode dossier, sans --watch)
|
||||
-h, --help Affiche cette aide
|
||||
|
||||
Exemples:
|
||||
md-render README.md Convertit README.md → README.html
|
||||
md-render README.md --watch Prévisualisation live sur localhost:3000
|
||||
md-render README.md --watch Live reload sur localhost:3000
|
||||
md-render README.md --watch --open Live reload + ouvre le navigateur
|
||||
md-render README.md --preview Alias de --watch --open
|
||||
md-render ../my-portal.wiki/ Convertit tous les .md du dossier
|
||||
md-render ../my-portal.wiki/ --watch Wiki live sur localhost:3000
|
||||
`);
|
||||
@@ -51,24 +55,47 @@ if (!fs.existsSync(absInput)) {
|
||||
const stat = fs.statSync(absInput);
|
||||
const isDir = stat.isDirectory();
|
||||
|
||||
// ── WATCH MODE ──────────────────────────────────────────────────────────────
|
||||
if (argv.watch) {
|
||||
// ── SERVER MODE (--watch ou --preview) ──────────────────────────────────────
|
||||
if (argv.watch || argv.preview) {
|
||||
const port = parseInt(argv.port, 10);
|
||||
if (isNaN(port) || port < 1 || port > 65535) {
|
||||
console.error(`\n✗ Erreur : port invalide "${argv.port}".\n`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const server = startServer({
|
||||
const shouldOpen = argv.preview || argv.open;
|
||||
|
||||
function openBrowser(url) {
|
||||
const { exec } = require('child_process');
|
||||
const cmd =
|
||||
process.platform === 'darwin' ? `open "${url}"` :
|
||||
process.platform === 'win32' ? `start "" "${url}"` :
|
||||
`xdg-open "${url}"`;
|
||||
exec(cmd, (err) => {
|
||||
if (err) console.warn(` ⚠ Impossible d'ouvrir le navigateur : ${err.message}`);
|
||||
});
|
||||
}
|
||||
|
||||
const serverObj = startServer({
|
||||
inputFile: isDir ? null : absInput,
|
||||
inputDir: isDir ? absInput : null,
|
||||
port,
|
||||
onReady: shouldOpen ? (p) => {
|
||||
console.log(' Appuyez sur Ctrl+C pour arrêter.\n');
|
||||
openBrowser(`http://localhost:${p}`);
|
||||
} : null,
|
||||
});
|
||||
|
||||
startWatcher({
|
||||
inputFile: isDir ? null : absInput,
|
||||
inputDir: isDir ? absInput : null,
|
||||
server,
|
||||
server: serverObj,
|
||||
});
|
||||
|
||||
process.on('SIGINT', () => {
|
||||
serverObj.server.close();
|
||||
console.log('\n👋 Au revoir !');
|
||||
process.exit(0);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user