diff --git a/Makefile b/Makefile
index bcb434d6a5576e..787d0ca83ec91d 100644
--- a/Makefile
+++ b/Makefile
@@ -239,6 +239,10 @@ apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
+docguide:
+ mkdir -p out/doc/guides
+ $(NODE) tools/doc/guide.js
+
doc: $(apidoc_dirs) $(apiassets) $(apidocs) tools/doc/ $(NODE_EXE)
$(apidoc_dirs):
diff --git a/doc/template-guide.html b/doc/template-guide.html
new file mode 100644
index 00000000000000..76decad59f4a13
--- /dev/null
+++ b/doc/template-guide.html
@@ -0,0 +1,32 @@
+
+
+
+
+ Node.js __VERSION__ Manual & Guide
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/doc/guide.js b/tools/doc/guide.js
new file mode 100644
index 00000000000000..614670aab50d45
--- /dev/null
+++ b/tools/doc/guide.js
@@ -0,0 +1,53 @@
+const path = require('path');
+const fs = require('fs');
+
+const remark = require('remark');
+const html = require('remark-html');
+const toc = require('remark-toc');
+const hljs = require('remark-highlight.js');
+
+const processor = remark()
+ .use(toc)
+ .use(html)
+ .use(hljs)
+const remarkOptions = {
+ yaml: true,
+ bullet: '*'
+}
+
+const guidesDir = path.join(__dirname, '../../', 'doc', 'guides');
+const outputDir = path.join(__dirname, '../../', 'out', 'doc', 'guides');
+const templateFile = path.join(__dirname, '../../', 'doc', 'template-guide.html');
+const template = fs.readFileSync(templateFile, { encoding: 'utf8' })
+
+fs.readdir(guidesDir, function(err, files) {
+ if (err) {
+ throw err;
+ }
+ files.forEach(function(fileName) {
+ const pageSlug = path.basename(fileName, '.md');
+ fs.readFile(path.join(guidesDir, fileName), { encoding: 'utf8' }, function(err, content) {
+ var mdast = processor.parse(content, remarkOptions);
+ mdast = processor.run(mdast);
+ const html = processor.stringify(mdast, remarkOptions);
+ // Locate YAML front matter
+ if (mdast.children[0] && mdast.children[0].type === 'yaml') {
+ // Found YAML
+ var yamlData = {}
+ mdast.children[0].value.split('\n').forEach(function(line) {
+ const keyValue = line.match(/(\w+):\s?(.+)/)
+ yamlData[keyValue[1]] = keyValue[2]
+ })
+ // console.log(yamlData)
+ }
+ var output = template.replace(/__VERSION__/g, process.version);
+ output = output.replace(/__CONTENT__/g, html);
+ output = output.replace(/__FILENAME__/g, pageSlug);
+ fs.writeFile(path.join(outputDir, pageSlug + '.html'), output, function(err) {
+ if (err) {
+ throw err;
+ }
+ })
+ })
+ })
+})
\ No newline at end of file
diff --git a/tools/doc/package.json b/tools/doc/package.json
index d87c9345b33f2e..f3662e8cac7d1d 100644
--- a/tools/doc/package.json
+++ b/tools/doc/package.json
@@ -7,7 +7,11 @@
"node": ">=0.6.10"
},
"dependencies": {
- "marked": "~0.1.9"
+ "marked": "~0.1.9",
+ "remark": "^3.2.2",
+ "remark-highlight.js": "^3.0.0",
+ "remark-html": "^3.0.0",
+ "remark-toc": "^3.0.0"
},
"devDependencies": {},
"optionalDependencies": {},