首页 > 解决方案 > Yeoman Generator - 如何解析 Generator 项目的 Package.json

问题描述

我的生成器中有以下标准文件夹结构。我目前正在努力解决的任务是我目前有一个模板化的 _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 文件?我的相对路径关闭了吗?任何帮助是极大的赞赏。

文件夹结构

标签: javascriptjsonyeoman

解决方案


我最终用以下方法修复它:

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


推荐阅读