javascript - 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 文件?我的相对路径关闭了吗?任何帮助是极大的赞赏。
解决方案
我最终用以下方法修复它:
var pkgJSON = require('../../package.json');
this.answers.corePkgGeneratorAPI = JSON.parse(JSON.stringify(pkgJSON)).version;
推荐阅读
- vba - 为什么这个 VBA 代码会破坏 Excel?
- c++ - 流默认具有哪种语言环境
- node.js - 节点 JS - TypeError:无法读取未定义的属性“CONTEXT_1”
- firebase - 如何从本地服务器的firebase存储中获取firebase中的文件?
- javascript - 无法通过 Javascript 中的对象调用静态方法
- java - 如何从 Maven 构建中删除未声明的依赖项
- javascript - 如何让路由器视图在另一个组件中呈现组件?
- swift - Xcode 9 在 Ctrl+拖动时显示菜单
- typescript - Angular中的模板错误
- sql - PLSQL 使用触发器插入和更新另一个表