// Put this file in a directory where @stencil/core exists in node_modules, then run: // $ echo $HTML | node ssr.js [root] [build-dir] [namespace] // Full example from my use case: // $ echo '' | node ssr.js /var/www/stencil/sams-components/dist ../ sam // Pipes are used because HTML strings can be really long, and bash has limits on how large argument lists can get (~256k usually). var stencil = require('@stencil/core'); var args = process.argv.slice(2); if (args.length < 3) { console.error('Not enough args'); } var data = ''; process.stdin.resume(); process.stdin.setEncoding('utf8'); process.stdin.on('data', function(chunk) { data += chunk; }); process.stdin.on('end', function() { var renderer = stencil.createRenderer({ rootDir: args[0], buildDir: args[1], namespace: args[2] }); renderer.hydrateToString({ html: data }, function(results) { if (results.diagnostics.length) { console.error(results.diagnostics); } console.log(results.html); }); });