如何获取正在运行的Yeoman生成器的当前路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取正在运行的Yeoman生成器的当前路径相关的知识,希望对你有一定的参考价值。
我有自己的Yeoman发电机。 我创建了一个子生成器来创建一个新的视图文件夹。
基本上,用法是:
- 打开一个新的终端
- cd进入父文件夹
- 运行yeoman命令
yo my-generator:view
- 按照说明操作
此视图子生成器提示文件夹名称。
例如:
如果我想在默认视图目录上创建视图身份验证。
cd views
yo my-generator:view
结果应该是:
views //- Already created by the main generator
├── authentication
│ ├── authentication.controller.js
│ ├── authentication.template.html
现在,如果我想为身份验证视图创建子视图登录。
cd views/authentication
yo my-generator:view
结果应该是:
views //- Already created by the main generator
├── authentication
│ ├── authentication.controller.js
│ ├── authentication.template.html
│ ├── login
│ │ ├── login.controller.js
│ │ ├── login.template.html
相反,当前(错误)的结果是:
views //- Already created by the main generator
├── authentication
│ ├── authentication.controller.js
│ ├── authentication.template.html
├── login
│ ├── login.controller.js
│ ├── login.template.html
我在这里的斗争是,当我运行命令时,我不知道如何获取当前路径。
实际上,我只是使用默认前缀路径创建新文件夹,即app / views /。 这就是身份验证示例的作用。
但是,当我的当前路径在views文件夹中更深时,它将在views文件夹的根目录中添加新文件夹。 如果我可以获得当前路径(cmd),我应该能够将此路径添加为前缀,而不是设置默认路径而不是静态路径。 这就是Login示例不起作用的原因。
一些代码示例:
$that
是当前的生成器对象$that.viewNameCamel
是用户设置的文件夹的名称
我使用.txt文件作为模板,然后创建controller.js文件。
const filePrefix = 'app/views/' + $that.viewNameCamel + '/' + $that.viewNameCamel + '.';
const exampleData = {
controllerAlias: 'vm',
otherVar: 'example'
};
$that.fs.copyTpl(
$that.templatePath('controller.txt'),
filePrefix + 'controller.js',
exampleData
);
尝试:
- $ that.env.cwd
- process.cwd()
- __dirname
- path.js库
类似:
所以,伙计们,你有一个线索,我如何得到当前的文件夹路径? 这里有替代解决方案吗?
谢谢 !
编辑1:
这里的问题是项目根目录中的.yo-rc.json
。
该文件重写路径,所以我应该删除它来解决问题。
但是,如果删除此文件,将不再保存用户配置。
我需要它用于以后的子发电机使用。
还有另一种保存用户配置的方法吗? 或者再一次,有另一种方法来获得当前的真实路径吗?
只需从根目录中删除.yo-rc.json
文件即可。这是负责查找根目录的文件,无论您在文件系统中的位置如何。
我不确定移除它的后果,但我建造的发电机似乎没有发生任何事情。
现在你可以使用process.cwd()
,它将获得正确的工作目录。
对于你的用例有一个前缀app/views
,你可能需要编写一些javascript来追加或不根据你的位置附加前缀,这应该是微不足道的。
以上是关于如何获取正在运行的Yeoman生成器的当前路径的主要内容,如果未能解决你的问题,请参考以下文章
Yeoman - 在循环依赖中访问模块导出的不存在属性____