Yeoman Generator-如何解析Generator项目的Package.json

时间:2018-07-11 00:15:45

标签: javascript json yeoman

我的生成器中具有以下标准文件夹结构。我目前正在苦苦挣扎的任务是,我目前有一个模板化的_package.json,我已将其写入主流磁盘。我要合并的package.json中有一个变量,它是生成器项目的实际版本。基本上,我希望能够通过新生成的api项目的package.json来确定使用哪个版本的生成器来构建项目,以便我可以定位较旧的版本并将其标记为要更新。

我试图通过以下提示代码在生成器的各个步骤(例如,prompting.js和Writing.js)中实现这一目标:

var fs = require('fs');

let pkgGeneratorAPIVersion = JSON.parse(fs.readFileSync('../../package.json', 'utf8'));

但是它不起作用。我不断收到以下错误:

Error: ENOENT: no such file or directory, open 'package.json'
    at Object.fs.openSync (fs.js:646:18)
    at Object.fs.readFileSync (fs.js:551:33)
    at module.exports.prompt.answers

我尝试了各种相对路径都无济于事。有没有更好的方法来解析json文件?我的相对路线偏离了吗?任何帮助将不胜感激。

Folder structure

1 个答案:

答案 0 :(得分:1)

我最终通过以下内容对其进行了修复:

var pkgJSON = require('../../package.json');
this.answers.corePkgGeneratorAPI = JSON.parse(JSON.stringify(pkgJSON)).version;