From 115267a55e04125828683fda639703e921e873c4 Mon Sep 17 00:00:00 2001 From: Kevin Jantzer Date: Tue, 6 Nov 2018 08:36:39 -0800 Subject: [PATCH 1/4] Allow user to specify metalsmith `ignore` option Related to #91; also helps solve #230 --- lib/ms.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/ms.js b/lib/ms.js index ab28121..5e37c88 100644 --- a/lib/ms.js +++ b/lib/ms.js @@ -23,6 +23,9 @@ function docpress (cwd, options) { .metadata(meta) .ignore('node_modules') .ignore(`!**/{${meta.docs}{,/**/*},*.md}`) + + if( typeof meta.ignore == 'object' && meta.ignore.forEach ) + meta.ignore.forEach(str=>app.ignore(str)) return app } From b29be45052a102a27332fea7bbbe577a64991c6e Mon Sep 17 00:00:00 2001 From: Kevin Jantzer Date: Tue, 6 Nov 2018 08:58:34 -0800 Subject: [PATCH 2/4] Formatting code --- lib/ms.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ms.js b/lib/ms.js index 5e37c88..178282c 100644 --- a/lib/ms.js +++ b/lib/ms.js @@ -24,8 +24,9 @@ function docpress (cwd, options) { .ignore('node_modules') .ignore(`!**/{${meta.docs}{,/**/*},*.md}`) - if( typeof meta.ignore == 'object' && meta.ignore.forEach ) + if (typeof meta.ignore == 'object' && meta.ignore.forEach) { meta.ignore.forEach(str=>app.ignore(str)) + } return app } From badb2a079a90c05f07bdb87b5434763ea1d43bea Mon Sep 17 00:00:00 2001 From: Kevin Jantzer Date: Tue, 6 Nov 2018 09:59:59 -0800 Subject: [PATCH 3/4] Change to use `Array.isArray(meta.ignore)` --- lib/ms.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ms.js b/lib/ms.js index 178282c..928286f 100644 --- a/lib/ms.js +++ b/lib/ms.js @@ -24,7 +24,7 @@ function docpress (cwd, options) { .ignore('node_modules') .ignore(`!**/{${meta.docs}{,/**/*},*.md}`) - if (typeof meta.ignore == 'object' && meta.ignore.forEach) { + if (Array.isArray(meta.ignore)) { meta.ignore.forEach(str=>app.ignore(str)) } From dc2552fe744267c71f70dd5ed16618ac735cac72 Mon Sep 17 00:00:00 2001 From: Kevin Jantzer Date: Tue, 6 Nov 2018 14:53:49 -0800 Subject: [PATCH 4/4] Copy local images outside of `docs` dir to the `dist` directory Solves #200 --- lib/fix_html.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/fix_html.js b/lib/fix_html.js index 89ba555..abcdbd6 100644 --- a/lib/fix_html.js +++ b/lib/fix_html.js @@ -5,6 +5,7 @@ const slugify = require('slugify') const resolve = require('path').resolve const dirname = require('path').dirname const relative = require('path').relative +const fs = require('fs') /** * Internal: Performs in-place HTML filters (such as fixing URLs). @@ -61,7 +62,31 @@ function fixReferences ($, fname, sources, files, page) { // Ensure that it's available. if (!sources[target]) { - throw new Error(`${base}: Unknown reference '${origUrl}'`) + + // copy images to dist + if ($this[0].name == 'img') { + + try { + let img = fs.readFileSync(cwd+'/'+target) + + // metalsmith will write the image + files[target] = { + contents: img, + filename: target + } + + // change to absolute URL + $this.attr(attr, '/'+target) + + } catch (err) { + console.warn(`${base}: Unknown reference '${origUrl}'`) + } + + } else { + console.warn(`${base}: Unknown reference '${origUrl}'`) + } + + return; } // Relativize that absolute URL.