Yeoman 生成器启动速度极慢
Yeoman generator startup extremely slow
我创建了一个 Yeoman 生成器,它过去对我来说工作起来相当快捷。最近,性能直线下降到惊人的低点,每次我可以做一个简单的 yo generator-name
时都需要等待多达五分钟。这让我的工作变得极其困难,Yeoman 问题板上似乎没有任何帮助。
我试过打开详细的 Yeoman 调试,等了五分钟后,第一个 yeoman:generator
语句出现了。这是我得到的:
> yo @my/generator:subgen tryNumberOne
yeoman:generator Queueing initializing in initializing +0ms
yeoman:generator Queueing prompting in prompting +4ms
yeoman:generator Queueing writing in writing +0ms
yeoman:generator Queueing end in end +0ms
yeoman:generator Running initializing +4ms
Creating pure component file
- Initializing
yeoman:generator Running prompting +4ms
最糟糕的是,我已经验证这在另一个团队成员的 PC 上可以正常工作。它非常活泼,没有性能问题,所以问题不在代码上。
我唯一能想到的是 Yeoman 在我的机器上寻找依赖项的方式有些不对劲,或者它试图通过网络查找某些东西并超时,然后 运行ning 正常。不幸的是,我没有办法检验我能看到的理论。
尝试使用节点检查器时出现异常:
node --inspect-brk C:\Progra~1\nodejs\yo -i @my/generator:subgen tryTwo
Debugger listening on ws://127.0.0.1:9229/b56a9400-57c0-407d-9fb8-a114b6c6df47
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
C:\Users\myuser\AppData\Roaming\nvm\v8.11.3\yo:2
basedir=$(dirname "$(echo "[=11=]" | sed -e 's,\,/,g')")
^^^^^^^
SyntaxError: missing ) after argument list
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
Waiting for the debugger to disconnect...
^C
当然,使用上面的 ws:// 协议 url 在浏览器中是行不通的。您必须将其更改为 http://,然后添加 /json/list,并从那里拉出真正的 url 以在 Chrome 中打开调试器。即便如此,输出仍然是 SyntaxError: missing ) after argument list
我什至可以 运行 只需一个简单的 yo
命令,并且仍然需要等待,所以即使是生成器本身也不是问题。
有人知道这里发生了什么吗?
问题:https://github.com/yeoman/yo/issues/176
目前的解决方法,降级到 "yo": "1.8.5"
,如 comment 中所述。
其他需要考虑的事情
在本地安装yo
使用 npm
脚本直接将 yo
指向您的生成器路径
在你的 package.json
"scripts": {
"yo": "yo ./dist/yo-generator -- --no-insight"
},
"devDependencies": {
"yo": "1.8.5"
}
然后你可以做 npm run yo
,对我来说这也比使用全局 yo
命令更快。
我一直在关注这个问题,从2.0.5版本开始这个问题已经解决了。在此之前的任何版本中遇到此问题的任何人都应尽快升级。
如果您由于某种原因无法升级,请坚持使用 1.8.5,正如我在 Yeoman 问题板上的评论中提到的那样。
我创建了一个 Yeoman 生成器,它过去对我来说工作起来相当快捷。最近,性能直线下降到惊人的低点,每次我可以做一个简单的 yo generator-name
时都需要等待多达五分钟。这让我的工作变得极其困难,Yeoman 问题板上似乎没有任何帮助。
我试过打开详细的 Yeoman 调试,等了五分钟后,第一个 yeoman:generator
语句出现了。这是我得到的:
> yo @my/generator:subgen tryNumberOne
yeoman:generator Queueing initializing in initializing +0ms
yeoman:generator Queueing prompting in prompting +4ms
yeoman:generator Queueing writing in writing +0ms
yeoman:generator Queueing end in end +0ms
yeoman:generator Running initializing +4ms
Creating pure component file
- Initializing
yeoman:generator Running prompting +4ms
最糟糕的是,我已经验证这在另一个团队成员的 PC 上可以正常工作。它非常活泼,没有性能问题,所以问题不在代码上。
我唯一能想到的是 Yeoman 在我的机器上寻找依赖项的方式有些不对劲,或者它试图通过网络查找某些东西并超时,然后 运行ning 正常。不幸的是,我没有办法检验我能看到的理论。
尝试使用节点检查器时出现异常:
node --inspect-brk C:\Progra~1\nodejs\yo -i @my/generator:subgen tryTwo
Debugger listening on ws://127.0.0.1:9229/b56a9400-57c0-407d-9fb8-a114b6c6df47
For help see https://nodejs.org/en/docs/inspector
Debugger attached.
C:\Users\myuser\AppData\Roaming\nvm\v8.11.3\yo:2
basedir=$(dirname "$(echo "[=11=]" | sed -e 's,\,/,g')")
^^^^^^^
SyntaxError: missing ) after argument list
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
Waiting for the debugger to disconnect...
^C
当然,使用上面的 ws:// 协议 url 在浏览器中是行不通的。您必须将其更改为 http://,然后添加 /json/list,并从那里拉出真正的 url 以在 Chrome 中打开调试器。即便如此,输出仍然是 SyntaxError: missing ) after argument list
我什至可以 运行 只需一个简单的 yo
命令,并且仍然需要等待,所以即使是生成器本身也不是问题。
有人知道这里发生了什么吗?
问题:https://github.com/yeoman/yo/issues/176
目前的解决方法,降级到 "yo": "1.8.5"
,如 comment 中所述。
其他需要考虑的事情
在本地安装
yo
使用
npm
脚本直接将yo
指向您的生成器路径
在你的 package.json
"scripts": {
"yo": "yo ./dist/yo-generator -- --no-insight"
},
"devDependencies": {
"yo": "1.8.5"
}
然后你可以做 npm run yo
,对我来说这也比使用全局 yo
命令更快。
我一直在关注这个问题,从2.0.5版本开始这个问题已经解决了。在此之前的任何版本中遇到此问题的任何人都应尽快升级。
如果您由于某种原因无法升级,请坚持使用 1.8.5,正如我在 Yeoman 问题板上的评论中提到的那样。