Last active
August 4, 2017 10:49
-
-
Save samuelcolvin/33eac9608844a5647032fc5f50633d06 to your computer and use it in GitHub Desktop.
nunjucks-precompile with jinja compat (modified from `v3.0.1`), see https://stackoverflow.com/a/45440732/949890
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env node | |
| var path = require('path'); | |
| var precompile = require('nunjucks/src/precompile').precompile; | |
| var Environment = require('nunjucks/src/environment').Environment; | |
| var lib = require('nunjucks/src/lib'); | |
| var nunjucks = require('nunjucks'); | |
| nunjucks.installJinjaCompat(); | |
| var yargs = require('yargs') | |
| .usage('$0 [-f|--force] [-a|--filters <filters>] [-n|--name <name>] [-i|--include <regex>] [-x|--exclude <regex>] [-w|--wrapper <wrapper>] <path>') | |
| .wrap(80) | |
| .describe('help', 'Display this help message') | |
| .boolean('help') | |
| .alias('h', 'help') | |
| .alias('?', 'help') | |
| .describe('force', 'Force compilation to continue on error') | |
| .boolean('force') | |
| .alias('f', 'force') | |
| .describe('filters', 'Give the compiler a comma-delimited list of asynchronous filters, required for correctly generating code') | |
| .string('filters') | |
| .alias('a', 'filters') | |
| .describe('name', 'Specify the template name when compiling a single file') | |
| .string('name') | |
| .alias('n', 'n') | |
| .describe('include', 'Include a file or folder which match the regex but would otherwise be excluded. You can use this flag multiple times') | |
| .string('include' ) | |
| .default('include', ['\\.html$', '\\.jinja$']) | |
| .alias('i', 'include') | |
| .describe('exclude', 'Exclude a file or folder which match the regex but would otherwise be included. You can use this flag multiple times') | |
| .string('exclude' ) | |
| .default('exclude', []) | |
| .alias('x', 'exclude') | |
| .describe('wrapper', 'Load a external plugin to change the output format of the precompiled templates (for example, "-w custom" will load a module named "nunjucks-custom")') | |
| .string('wrapper') | |
| .alias('w', 'wrapper') | |
| .demand(1); | |
| var argv = yargs.argv; | |
| if (argv.help) { | |
| yargs.showHelp(); | |
| process.exit(1); | |
| } | |
| var env = new Environment([]); | |
| lib.each([].concat(argv.filters).join(',').split(','), function(name) { | |
| env.addFilter(name.trim(), function() {}, true); | |
| }); | |
| if(argv.wrapper) { | |
| argv.wrapper = require('nunjucks-' + argv.wrapper).wrapper; | |
| } | |
| console.log(precompile(argv._[0], { | |
| env : env, | |
| force : argv.force, | |
| name : argv.name, | |
| wrapper: argv.wrapper, | |
| include : [].concat(argv.include), | |
| exclude : [].concat(argv.exclude) | |
| })); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment