分享一个自己用于制作简历的 Node.js 小脚本,把 Jade 和 YAML 编译成 HTML

2014-09-24 19:30:04 +08:00
 hustlzp

拿了上海一家互联网金融小公司的 offer,面试的时候带着电脑把 Web 版简历给面试官看了下,感觉还是蛮加分的。

挺简单的,就是用 YAML 做简历数据源,Jade做模板,然后编译成 HTML 就完了。使用 Gulp 来监控文件变化,自动编译。然后找个地方托管,比如 GitHub Pages 就可以了。

Web简历地址: http://resume.hustlzp.com
代码: https://github.com/hustlzp/resume

主要的代码在这里:

https://raw.githubusercontent.com/hustlzp/resume/gh-pages/gulpfile.js

var fs = require('fs');
var jade = require('jade');
var gulp = require('gulp');
var yaml = require('js-yaml');
var moment = require('moment');
var Promise = require("bluebird");

var dataFile = 'data.yml';
var jadeFile = 'index.jade';
var htmlFile = 'index.html';

// 将相关函数promisify
Promise.promisifyAll(fs);
var renderFile = Promise.promisify(jade.renderFile);

// 将data.yml和index.jade编译为index.html
gulp.task('build', function () {
  fs.readFileAsync(dataFile, "utf8").then(function (content) {
    return yaml.safeLoad(content);
  }).then(function (data) {
    // 输出未压缩的HTML
    data.pretty = true;
    data.updateTime = moment().format("YYYY-MM-DD");
    data.currentYear = moment().format("YYYY");
    return renderFile(jadeFile, data);
  }).then(function (html) {
    return fs.writeFileAsync(htmlFile, html);
  }).then(function () {
    console.log(moment().format("YYYY-MM-DD HH:mm:ss") + ' - SAVED');
  }).catch(function (err) {
    console.log(moment().format("YYYY-MM-DD HH:mm:ss") + ' - ERROR\n' + err);
    fs.writeFile(htmlFile, err);
  });
});

// 源文件变动时,触发编译
gulp.task('watch', function () {
  gulp.watch([jadeFile, dataFile], ['build']);
});

// gulp运行时触发一次编译,然后开启监控进程
gulp.task('default', ['build', 'watch']);
5257 次点击
所在节点    Node.js
6 条回复
hustlzp
2014-09-24 19:34:16 +08:00
@Livid 使用markdwon格式发布的,代码字符中好多白色的,和背景分不清啦~
pcwuyu
2014-09-24 22:05:21 +08:00
不错啊。。看标题我还以为是免费生成简历来着的。。。。。
hustlzp
2014-09-25 08:10:51 +08:00
@pcwuyu 恩恩...只是一个自动编译的小脚本...
tolerious
2014-09-25 14:30:19 +08:00
可惜了光电的娃娃啊
hustlzp
2014-09-25 14:39:27 +08:00
@tolerious 对光电确实不感兴趣啊...
tolerious
2014-09-26 14:02:53 +08:00
@hustlzp 互联网金融,不错哇

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/135467

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX