Browse Source

Added ability to build and install cli binary so that templates can be executed directly

master
Ben Ashton 2 years ago
parent
commit
8b1efa29c4
  1. 2
      cli.mjs
  2. 4
      dist/.gitignore
  3. 1
      example_templates/readme_example.n0m
  4. 2
      index.mjs
  5. 5193
      package-lock.json
  6. 17
      package.json
  7. 0
      src/character_stream.mjs
  8. 0
      src/errors/template_syntax_error.mjs
  9. 2
      src/template_engine.mjs
  10. 4
      src/token_stream.mjs
  11. 15
      webpack.config.mjs

2
cli.js → cli.mjs

@ -4,7 +4,7 @@ import { spawn } from 'node:child_process';
import { file } from 'tmp-promise';
import { renderFile } from './src/template_engine.js';
import { renderFile } from './src/template_engine.mjs';
if (process.argv.length <= 2) {

4
dist/.gitignore vendored

@ -0,0 +1,4 @@
# Preserve directory, but ignore contents
*
*/
!.gitignore

1
example_templates/readme_example.n0m

@ -1,3 +1,4 @@
#!/usr/bin/env n0m
$ #!/bin/sh
$ title='My Restaurant Randomizer';
<!doctype html>

2
index.js → index.mjs

@ -1 +1 @@
export { TemplateEngine, renderFile } from './src/template_engine.js';
export { TemplateEngine, renderFile } from './src/template_engine.mjs';

5193
package-lock.json generated

File diff suppressed because it is too large Load Diff

17
package.json

@ -2,15 +2,26 @@
"name": "n0m-template-engine",
"version": "1.0.0",
"description": "",
"main": "index.js",
"module": "index.mjs",
"scripts": {
"start": "node cli.js",
"test": "echo \"Error: no test specified\" && exit 1"
"test": "echo \"Error: no test specified\" && exit 1",
"make": "npx webpack && npx pkg .",
"install": "sudo cp ./dist/n0m-template-engine /usr/local/bin/n0m"
},
"author": "",
"license": "MIT",
"type": "module",
"dependencies": {
"tmp-promise": "^3.0.3"
},
"devDependencies": {
"pkg": "^5.8.0",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0"
},
"bin": "dist/cli.js",
"pkg": {
"targets": [ "node18-linux" ],
"outputPath": "dist"
}
}

0
src/character_stream.js → src/character_stream.mjs

0
src/errors/template_syntax_error.js → src/errors/template_syntax_error.mjs

2
src/template_engine.js → src/template_engine.mjs

@ -1,4 +1,4 @@
import { TokenStream } from './token_stream.js';
import { TokenStream } from './token_stream.mjs';
export class TemplateEngine {
async render(fileName) {

4
src/token_stream.js → src/token_stream.mjs

@ -1,5 +1,5 @@
import { CharacterStream } from './character_stream.js';
import { TemplateSyntaxError } from './errors/template_syntax_error.js';
import { CharacterStream } from './character_stream.mjs';
import { TemplateSyntaxError } from './errors/template_syntax_error.mjs';
export class TokenStream {
static OPEN_INLINE = '<%';

15
webpack.config.mjs

@ -0,0 +1,15 @@
import * as url from 'url';
import path from 'path';
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
export default {
mode: 'development',
target: 'node',
entry: path.join(__dirname, 'cli.mjs'),
experiments: {
topLevelAwait: true
},
output: {
filename: 'cli.js'
}
};
Loading…
Cancel
Save