diff --git a/lib/hexo/load_config.js b/lib/hexo/load_config.js index 6d9d3f890b..42bbb719f4 100644 --- a/lib/hexo/load_config.js +++ b/lib/hexo/load_config.js @@ -1,12 +1,12 @@ 'use strict'; -const merge = require('lodash/merge'); const { sep, resolve, join, parse } = require('path'); const tildify = require('tildify'); const Theme = require('../theme'); const Source = require('./source'); const fs = require('hexo-fs'); const chalk = require('chalk'); +const { deepMerge } = require('hexo-util'); module.exports = ctx => { if (!ctx.env.init) return; @@ -26,7 +26,9 @@ module.exports = ctx => { ctx.log.debug('Config loaded: %s', chalk.magenta(tildify(configPath))); - config = merge(ctx.config, config); + ctx.config = deepMerge(ctx.config, config); + config = ctx.config; + ctx.config_path = configPath; config.root = config.root.replace(/\/*$/, '/'); diff --git a/lib/hexo/multi_config_path.js b/lib/hexo/multi_config_path.js index afc3b40b00..c66442b7bd 100644 --- a/lib/hexo/multi_config_path.js +++ b/lib/hexo/multi_config_path.js @@ -2,8 +2,8 @@ const { isAbsolute, resolve, join, extname } = require('path'); const fs = require('hexo-fs'); -const merge = require('lodash/merge'); const yml = require('js-yaml'); +const { deepMerge } = require('hexo-util'); module.exports = ctx => function multiConfigPath(base, configPaths, outputDir) { const { log } = ctx; @@ -33,7 +33,7 @@ module.exports = ctx => function multiConfigPath(base, configPaths, outputDir) { const numPaths = paths.length; // combine files - const combinedConfig = {}; + let combinedConfig = {}; let count = 0; for (let i = 0; i < numPaths; i++) { const configPath = isAbsolute(paths[i]) ? paths[i] : join(base, paths[i]); @@ -48,10 +48,10 @@ module.exports = ctx => function multiConfigPath(base, configPaths, outputDir) { const ext = extname(paths[i]).toLowerCase(); if (ext === '.yml') { - merge(combinedConfig, yml.load(file)); + combinedConfig = deepMerge(combinedConfig, yml.load(file)); count++; } else if (ext === '.json') { - merge(combinedConfig, yml.safeLoad(file, {json: true})); + combinedConfig = deepMerge(combinedConfig, yml.safeLoad(file, {json: true})); count++; } else { log.w(`Config file ${paths[i]} not supported type.`);