From 9db74ea49d7597bac6b0ac60ba8e7b6abb62ec27 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Fri, 17 Mar 2017 17:17:50 +0100 Subject: [PATCH] Add filename when in handlebars errors --- lib/generate.js | 5 ++++- test/e2e/mock-error/meta.js | 9 +++++++++ test/e2e/mock-error/template/readme.md | 1 + test/e2e/test.js | 9 +++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test/e2e/mock-error/meta.js create mode 100644 test/e2e/mock-error/template/readme.md diff --git a/lib/generate.js b/lib/generate.js index bc73cec05d..a98a40fc2c 100644 --- a/lib/generate.js +++ b/lib/generate.js @@ -115,7 +115,10 @@ function renderTemplateFiles (skipInterpolation) { return next() } render(str, metalsmithMetadata, function (err, res) { - if (err) return next(err) + if (err) { + err.message = `[${file}] ${err.message}` + return next(err) + } files[file].contents = new Buffer(res) next() }) diff --git a/test/e2e/mock-error/meta.js b/test/e2e/mock-error/meta.js new file mode 100644 index 0000000000..6a386f2724 --- /dev/null +++ b/test/e2e/mock-error/meta.js @@ -0,0 +1,9 @@ +module.exports = { + prompts: { + name: { + type: 'string', + required: true, + message: 'Name' + } + } +} diff --git a/test/e2e/mock-error/template/readme.md b/test/e2e/mock-error/template/readme.md new file mode 100644 index 0000000000..d4fb53e105 --- /dev/null +++ b/test/e2e/mock-error/template/readme.md @@ -0,0 +1 @@ +{{error,name}} diff --git a/test/e2e/test.js b/test/e2e/test.js index e59a5918cd..704808ecfa 100644 --- a/test/e2e/test.js +++ b/test/e2e/test.js @@ -17,6 +17,7 @@ const MOCK_TEMPLATE_REPO_PATH = path.resolve('./test/e2e/mock-template-repo') const MOCK_TEMPLATE_BUILD_PATH = path.resolve('./test/e2e/mock-template-build') const MOCK_METADATA_REPO_JS_PATH = path.resolve('./test/e2e/mock-metadata-repo-js') const MOCK_SKIP_GLOB = path.resolve('./test/e2e/mock-skip-glob') +const MOCK_ERROR = path.resolve('./test/e2e/mock-error') function monkeyPatchInquirer (answers) { // monkey patch inquirer @@ -223,4 +224,12 @@ describe('vue-cli', () => { expect(getTemplatePath('..')).to.equal(path.join(__dirname, '/../../..')) expect(getTemplatePath('../template')).to.equal(path.join(__dirname, '/../../../template')) }) + + it.only('points out the file in the error', done => { + monkeyPatchInquirer(answers) + generate('test', MOCK_ERROR, MOCK_TEMPLATE_BUILD_PATH, err => { + expect(err.message).to.match(/^\[readme\.md\] Parse error/) + done() + }) + }) })