Node.js 如何获取正在运行的发电机的电流路径
我有自己的约曼发电机。Node.js 如何获取正在运行的发电机的电流路径,node.js,path,generator,yeoman,yeoman-generator,Node.js,Path,Generator,Yeoman,Yeoman Generator,我有自己的约曼发电机。 我创建了一个子生成器来创建一个新的视图文件夹 基本上,用法是: 打开一个新的终端 将cd放入父文件夹 运行yeoman命令yomygenerator:view 按照说明去做 此视图子生成器提示输入文件夹名称 例如: 如果要在默认视图目录上创建视图身份验证 cd views yo my-generator:view 结果应该是: views //- Already created by the main generator ├── authentication │
我创建了一个子生成器来创建一个新的视图文件夹 基本上,用法是:
- 打开一个新的终端
- 将cd放入父文件夹
- 运行yeoman命令
yomygenerator:view
- 按照说明去做
cd views
yo my-generator:view
结果应该是:
views //- Already created by the main generator
├── authentication
│ ├── authentication.controller.js
│ ├── authentication.template.html
views //- Already created by the main generator
├── authentication
│ ├── authentication.controller.js
│ ├── authentication.template.html
│ ├── login
│ │ ├── login.controller.js
│ │ ├── login.template.html
现在,如果我想为身份验证视图创建子视图login
cd views/authentication
yo my-generator:view
结果应该是:
views //- Already created by the main generator
├── authentication
│ ├── authentication.controller.js
│ ├── authentication.template.html
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/创建了一个新文件夹这就是验证示例起作用的原因 但是,当“视图”文件夹中的“我的当前路径”更深时,它将在“视图”文件夹的根目录下添加新文件夹。
如果我可以获得当前路径(cmd),我应该能够添加此路径作为前缀,而不是设置默认路径而不是静态路径。
这就是为什么登录示例不起作用的原因 一些代码示例:
$这是当前生成器对象
是用户设置的文件夹的名称$that.viewNameCamel
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()
- __肮脏的
- path.js库
这里有其他的解决办法吗 谢谢 编辑1:
这里的问题是projet根目录中存在的
.yo rc.json
。文件重写了路径,因此我应该将其删除以解决问题。
但是,如果删除此文件,将不再保存用户配置。
我需要它,以便以后使用子生成器 是否有其他方法保存用户配置?
或者,是否有其他方法获取当前实际路径?只需从根目录中删除
.yo rc.json
文件即可。这是负责定位根目录的文件,无论您在文件系统中的位置如何
我不确定移除它的影响,但我建造的发电机似乎什么也没发生
现在您可以使用process.cwd()
,它将获得正确的工作目录
cd views
yo my-generator:view
为了让您的用例有一个前缀
app/views
,您可能需要编写一些Javascript来根据您所在的位置附加或不附加前缀,这应该很简单。我知道这有点老了,但对于任何后来的人来说,
从文件中
如果您想知道用户运行yo的位置,那么可以使用this.contextRoot获取路径。这是调用yo的原始路径;在使用.yo-rc.json确定项目根之前。
根据我的经验,删除
.yo rc.json
意味着您需要手动检查提供的路径是否正确,拥有一个固定的根点很有帮助。感谢您的回答,但我需要保持此文件的活动状态。其中的数据来自另一个生成器,我需要它们作为视图生成器(如应用程序名称、当前语言、作者等)。我应该能够随时访问这些数据(最终,我可以将这些数据保存在新的自定义文件中,我将尝试一些东西)。嗯,如果您愿意在每个目录中创建一个配置为空的.yorc.json
的文件,那么您可以实现这一点,但这将是一个丑陋的目录结构。或者有没有办法创建文件,识别工作目录,然后删除文件?太牵强了,但我想值得一试。如果我可以简单地删除.yo rc.json
文件以获得真正的路径,我会找到正确路径的解决方案,不用担心。然后,我必须将所有引用更改为x.config.set(…)
和x.config.get(…)
,以避免创建和使用该文件。另一种选择是使用类似的方法。然后我会有我自己的文件,内容也会差不多。即使这个解决方案在我看来是可行的,但仅仅围绕路径查找工作似乎有点过分。测试1:您是对的,删除.yo rc.json
只需修复错误的路径(使用$that.env.cwd和process.cwd().测试2:从文件前缀中删除'app/views/'+
,再加上测试1的内容,使子生成器视图工作得很好。最后一步是用我自己的配置替换整个本机配置。谢谢!我在文件里漏掉了这个。这是正确的答案:)