diff --git a/lib/hexo/post.js b/lib/hexo/post.js index ad4565e00c..6508e8fec4 100644 --- a/lib/hexo/post.js +++ b/lib/hexo/post.js @@ -8,8 +8,7 @@ const { magenta } = require('chalk'); const { load } = require('js-yaml'); const { slugize, escapeRegExp } = require('hexo-util'); const { copyDir, exists, listDir, mkdirs, readFile, rmdir, unlink, writeFile } = require('hexo-fs'); -const yfm = require('hexo-front-matter'); - +const { parse: yfmParse, split: yfmSplit, stringify: yfmStringify } = require('hexo-front-matter'); const preservedKeys = ['title', 'slug', 'path', 'layout', 'date', 'content']; const rPlaceholder = /(?:<|<)!--\uFFFC(\d+)--(?:>|>)/g; @@ -128,15 +127,15 @@ class Post { _renderScaffold(data) { const { tag } = this.context.extend; - let yfmSplit; + let splited; return this._getScaffold(data.layout).then(scaffold => { const frontMatter = prepareFrontMatter({ ...data }); - yfmSplit = yfm.split(scaffold); + splited = yfmSplit(scaffold); - return tag.render(yfmSplit.data, frontMatter); + return tag.render(splited.data, frontMatter); }).then(frontMatter => { - const { separator } = yfmSplit; + const { separator } = splited; const jsonMode = separator.startsWith(';'); // Parse front-matter @@ -151,14 +150,14 @@ class Post { let content = ''; // Prepend the separator - if (yfmSplit.prefixSeparator) content += `${separator}\n`; + if (splited.prefixSeparator) content += `${separator}\n`; - content += yfm.stringify(obj, { + content += yfmStringify(obj, { mode: jsonMode ? 'json' : '' }); // Concat content - content += yfmSplit.content; + content += splited.content; if (data.content) { content += `\n${data.content}`; @@ -197,7 +196,7 @@ class Post { return readFile(src); }).then(content => { // Create post - Object.assign(data, yfm(content)); + Object.assign(data, yfmParse(content)); data.content = data._content; delete data._content; diff --git a/lib/plugins/processor/asset.js b/lib/plugins/processor/asset.js index 449323e05c..d29957d2da 100644 --- a/lib/plugins/processor/asset.js +++ b/lib/plugins/processor/asset.js @@ -2,7 +2,7 @@ const { timezone, toDate, isExcludedFile, isMatch } = require('./common'); const Promise = require('bluebird'); -const yfm = require('hexo-front-matter'); +const { parse: yfm } = require('hexo-front-matter'); const { extname, relative } = require('path'); const { Pattern } = require('hexo-util'); diff --git a/lib/plugins/processor/post.js b/lib/plugins/processor/post.js index 6c544f68bd..01f274ee1d 100644 --- a/lib/plugins/processor/post.js +++ b/lib/plugins/processor/post.js @@ -2,7 +2,7 @@ const { toDate, timezone, isExcludedFile, isTmpFile, isHiddenFile, isMatch } = require('./common'); const Promise = require('bluebird'); -const yfm = require('hexo-front-matter'); +const { parse: yfm } = require('hexo-front-matter'); const { extname, join } = require('path'); const { stat, listDir } = require('hexo-fs'); const { slugize, Pattern, Permalink } = require('hexo-util'); diff --git a/lib/theme/view.js b/lib/theme/view.js index 3afa8e5c5f..6c0439bc48 100644 --- a/lib/theme/view.js +++ b/lib/theme/view.js @@ -1,7 +1,7 @@ 'use strict'; const { dirname, extname, join } = require('path'); -const yfm = require('hexo-front-matter'); +const { parse: yfm } = require('hexo-front-matter'); const Promise = require('bluebird'); const assignIn = (target, ...sources) => { diff --git a/package.json b/package.json index cd553262a6..5c40ea61f2 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "bluebird": "^3.5.2", "chalk": "^4.0.0", "hexo-cli": "^3.0.0", - "hexo-front-matter": "^1.0.0", + "hexo-front-matter": "^2.0.0", "hexo-fs": "^3.1.0", "hexo-i18n": "^1.0.0", "hexo-log": "^2.0.0", diff --git a/test/scripts/hexo/post.js b/test/scripts/hexo/post.js index 67f97c55f0..de412cd06b 100644 --- a/test/scripts/hexo/post.js +++ b/test/scripts/hexo/post.js @@ -6,7 +6,7 @@ const Promise = require('bluebird'); const { readFile, mkdirs, unlink, rmdir, writeFile, exists, stat, listDir } = require('hexo-fs'); const { highlight, escapeHTML } = require('hexo-util'); const { spy, useFakeTimers } = require('sinon'); -const frontMatter = require('hexo-front-matter'); +const { parse: yfm } = require('hexo-front-matter'); const fixture = require('../../fixtures/post_render'); const escapeSwigTag = str => str.replace(/{/g, '{').replace(/}/g, '}'); @@ -573,7 +573,7 @@ describe('Post', () => { }).then(data => post.publish({ slug: 'foo' })).then(data => { - const meta = frontMatter(data.content); + const meta = yfm(data.content); meta.tags.should.eql(['tag', 'test']); return unlink(data.path); }));