What is the problem?
After running blitz new, there is a very long delay (30-60 seconds on machines I have available) before any feedback is displayed to the user.
Steps to Reproduce:
blitz newVersions:
debug: local
debug: pkgPath: C:\dev\contrib\blitz\node_modules\@blitzjs\cli
env: win32-x64 node-v12.16.1
blitz: 0.6.0-canary.0 (global)
blitz: 0.6.0-canary.0 (local)
Supporting Documentation
N/A
I think the solution is to ensure every command lazy loads it’s dependencies
I added a message that logs immediately about it being alpha and could be slow. At least this will help a bit for right now.
Cool, good enough for now. 👍
Experiencing this issue too.
We definitely need to lazy load everything in the CLI. I bet this will make a big difference
Hello guys, I've been trying to test this and im not seeing such delays.
Would any of you mind to add this at the very top of new.ts and run the new command?
const {performance, PerformanceObserver} = require('perf_hooks')
const mod = require('module')
// Monkey patch the require function
mod.Module.prototype.require = performance.timerify(mod.Module.prototype.require)
require = performance.timerify(require)
// Activate the observer
let sum: number = 0
const obs = new PerformanceObserver((list: {getEntries: () => any}) => {
const entries = list.getEntries()
entries.forEach((entry: any[]) => {
sum = parseFloat(sum) + parseFloat(entry.duration)
console.log(`require('${entry[0]}')`, parseFloat(entry.duration) / 1000)
})
console.log('TOTAL', sum)
obs.disconnect()
})
obs.observe({entryTypes: ['function'], buffered: true})
This is my output
require('path') 0.000323605
require('path') 0.00000411
require('@oclif/command') 0.000043021999999999996
require('@oclif/command') 0.000030842
require('../command') 0.000027757000000000002
require('../command') 0.000020818
require('../generators/app') 0.082966314
require('../generators/app') 0.08296059700000001
require('../generator') 0.000027366000000000002
require('fs-readdir-recursive') 0.000021211
require('cross-spawn') 0.00014435600000000003
require('chalk') 0.000117929
require('username') 0.014162235
require('os') 0.000004768
require('execa') 0.011889068999999999
require('path') 0.000003831
require('child_process') 0.000002441
require('cross-spawn') 0.008452061
require('child_process') 0.0000034250000000000002
require('./lib/parse') 0.007705037
require('path') 0.000003197
require('nice-try') 0.00035125200000000003
require('./util/resolveCommand') 0.001179072
require('path') 0.0000031220000000000003
require('which') 0.000607275
require('path') 0.000003619
require('isexe') 0.000078556
require('path-key') 0.000293713
require('./util/escape') 0.000207426
require('./util/readShebang') 0.0007929009999999999
require('fs') 0.000003272
require('shebang-command') 0.0005782690000000001
require('shebang-regex') 0.000249288
require('semver') 0.0020008219999999998
require('./lib/enoent') 0.000307612
require('strip-eof') 0.000295657
require('npm-run-path') 0.000600313
require('path') 0.000003892
require('path-key') 0.000269356
require('is-stream') 0.000305398
require('get-stream') 0.000720603
require('pump') 0.000123574
require('./buffer-stream') 0.000210507
require('stream') 0.000003741
require('p-finally') 0.00028278
require('signal-exit') 0.00009406699999999999
require('./lib/errname') 0.00026022299999999996
require('util') 0.000003835
require('./lib/stdio') 0.000208839
require('mem') 0.001528338
require('mimic-fn') 0.000124261
require('p-is-promise') 0.000240848
require('map-age-cleaner') 0.000755463
require('p-defer') 0.000262246
require('fs-extra') 0.00008973399999999999
require('path') 0.000003086
require('../utils/replace-dependencies') 0.034508476
require('../utils/get-latest-version') 0.024828661000000002
require('./npm-fetch') 0.017814528
require('node-fetch') 0.012029954
require('stream') 0.000005524
require('http') 0.0030287120000000002
require('url') 0.000003776
require('https') 0.0028054739999999996
require('zlib') 0.001119579
require('encoding') 0.002983536
require('iconv-lite') 0.002160529
require('safer-buffer') 0.000493566
require('buffer') 0.000003909
require('./bom-handling') 0.00024212700000000002
require('./streams') 0.000353969
require('buffer') 0.000003641
require('stream') 0.000002173
require('./extend-node') 0.000400024
require('buffer') 0.0000034320000000000003
require('./iconv-loader') 0.000352884
require('../utils/replace-blitz-dependency') 0.002683106
require('@blitzjs/server') 0.000013627
require('chalk') 0.000014155
require('chalk') 0.000009049
require('hasbin') 0.002506482
require('hasbin') 0.002501527
require('async') 0.001965648
require('fs') 0.000004335
require('path') 0.00000203
require('debug') 0.000017916000000000003
require('debug') 0.000012114
require('../errors/prompt-aborted') 0.000018435
require('../errors/prompt-aborted') 0.000012005
require('/Users/ntorres/Documents/github/blitz/packages/cli/src/commands/start.ts') 0.007992173
require('@oclif/command') 0.000018143
require('@blitzjs/server') 0.000009110000000000001
require('./db') 0.000010731
require('/Users/ntorres/Documents/github/blitz/packages/cli/src/commands/test.ts') 0.011743205
require('cross-spawn') 0.000018492000000000002
require('@oclif/command') 0.000008782999999999999
require('has-yarn') 0.000499375
require('path') 0.000005406
require('fs') 0.000001911
require('debug') 0.000015993
TOTAL 355.18517599999996
Here you go:
Results on Windows 10
require('path') 0.0002385
require('path') 0.000005299
require('@oclif/command') 0.0000242
require('@oclif/command') 0.0000141
require('../command') 0.009499299000000001
require('../command') 0.009493399999999999
require('@oclif/command') 0.0003746
require('enquirer') 0.004199601000000001
require('assert') 0.0000069
require('events') 0.000003701
require('./lib/utils') 0.0019253990000000002
require('ansi-colors') 0.001319299
require('./symbols') 0.000357299
require('./lib/prompts') 0.0006525999999999999
require('../utils') 0.0000877
require('../generators/app') 0.320219901
require('../generators/app') 0.320214
require('../generator') 0.239242599
require('fs-extra') 0.0231476
require('./fs') 0.001545399
require('universalify') 0.000499901
require('graceful-fs') 0.000378301
require('./copy-sync') 0.004674701
require('./copy-sync') 0.004272700000000001
require('graceful-fs') 0.0003376
require('path') 0.0000059
require('../mkdirs') 0.001917401
require('universalify') 0.0002008
require('./make-dir') 0.001285601
require('../fs') 0.000158201
require('path') 0.000004299
require('at-least-node') 0.000631901
require('../util/utimes') 0.000721799
require('graceful-fs') 0.0003737
require('../util/stat') 0.000877901
require('../fs') 0.000156699
require('path') 0.000004299
require('util') 0.000002499
require('at-least-node') 0.00031749899999999995
require('./copy') 0.0024189
require('universalify') 0.000196201
require('./copy') 0.0018269
require('graceful-fs') 0.00033359899999999996
require('path') 0.000004699
require('../mkdirs') 0.0001457
require('../path-exists') 0.000747101
require('universalify') 0.00020100100000000002
require('../fs') 0.000144101
require('../util/utimes') 0.0000778
require('../util/stat') 0.0000738
require('./empty') 0.002435199
require('universalify') 0.0002042
require('graceful-fs') 0.0003133
require('path') 0.000004699
require('../mkdirs') 0.00014319999999999998
require('../remove') 0.001332499
require('universalify') 0.0002009
require('./rimraf') 0.0007412
require('graceful-fs') 0.00033159899999999997
require('path') 0.000004699
require('assert') 0.000003199
require('./ensure') 0.0029363
require('./file') 0.001005499
require('universalify') 0.0001994
require('path') 0.0000044990000000000005
require('graceful-fs') 0.0003139
require('../mkdirs') 0.0001471
require('./link') 0.000506599
require('universalify') 0.000009501000000000001
require('path') 0.000002799
require('graceful-fs') 0.0000061
require('../mkdirs') 0.0000053010000000000006
require('../path-exists') 0.0001537
require('./symlink') 0.0010179
require('universalify') 0.0000092
require('path') 0.0000027009999999999996
require('graceful-fs') 0.0000059
require('../mkdirs') 0.000005299
require('./symlink-paths') 0.0003424
require('path') 0.000004099
require('graceful-fs') 0.000007801
require('../path-exists') 0.000005801
require('./symlink-type') 0.00029959999999999996
require('graceful-fs') 0.000009199000000000001
require('../path-exists') 0.000006001000000000001
require('./json') 0.0041527000000000005
require('universalify') 0.0001976
require('./jsonfile') 0.0015757000000000002
require('jsonfile') 0.001311901
require('graceful-fs') 0.00030790099999999996
require('universalify') 0.000162099
require('./utils') 0.0002744
require('./output-json') 0.0016718
require('jsonfile/utils') 0.000132501
require('../output') 0.0012512
require('universalify') 0.00020050000000000002
require('graceful-fs') 0.00032359900000000004
require('path') 0.000005001
require('../mkdirs') 0.000143899
require('../path-exists') 0.00013989999999999999
require('./output-json-sync') 0.0002913
require('jsonfile/utils') 0.000009899
require('../output') 0.0000022009999999999998
require('./mkdirs') 0.000150799
require('./move-sync') 0.0015539
require('./move-sync') 0.001187399
require('graceful-fs') 0.000335
require('path') 0.000005199999999999999
require('../copy-sync') 0.0001515
require('../remove') 0.0001444
require('../mkdirs') 0.0001375
require('../util/stat') 0.0000765
require('./move') 0.0019318
require('universalify') 0.0001991
require('./move') 0.0013305
require('graceful-fs') 0.000324599
require('path') 0.000005099000000000001
require('../copy') 0.00015260000000000002
require('../remove') 0.000139699
require('../mkdirs') 0.0001386
require('../path-exists') 0.00013900000000000002
require('../util/stat') 0.0000748
require('./output') 0.000142199
require('./path-exists') 0.0001371
require('./remove') 0.000140701
require('fs') 0.0000045989999999999995
require('path') 0.000004901
require('events') 0.000003699
require('mem-fs') 0.007840599
require('events') 0.000005399
require('path') 0.0000028999999999999998
require('util') 0.0000025
require('vinyl-file') 0.006666
require('path') 0.000005101
require('graceful-fs') 0.00031
require('strip-bom') 0.0007624
require('is-utf8') 0.000314899
require('strip-bom-stream') 0.000311801
require('vinyl') 0.003405001
require('path') 0.000005601
require('clone') 0.0003189
require('clone-stats') 0.0004581
require('fs') 0.0000072
require('./lib/cloneBuffer') 0.0003187
require('buffer') 0.0000053010000000000006
require('./lib/isBuffer') 0.00025990000000000003
require('buffer') 0.000003901
require('./lib/isStream') 0.000269801
require('stream') 0.000005199
require('./lib/isNull') 0.00024660000000000003
require('./lib/inspectStream') 0.000370999
require('./isStream') 0.0000837
require('stream') 0.000004099
require('replace-ext') 0.000469299
require('path') 0.0000055
require('pify') 0.00048110000000000004
require('pinkie-promise') 0.0005684
require('vinyl') 0.00017030000000000002
require('through2') 0.00030130099999999997
require('mem-fs-editor') 0.15045830100000002
require('./actions/read.js') 0.00030470000000000003
require('./actions/read-json.js') 0.000255399
require('./actions/exists') 0.0002693
require('./actions/write.js') 0.000264701
require('assert') 0.0000054010000000000005
require('./actions/write-json.js') 0.000251099
require('./actions/extend-json.js') 0.0009854
require('deep-extend') 0.0007249989999999999
require('./actions/append.js') 0.0002818
require('deep-extend') 0.000003601
require('os') 0.0000046
require('./actions/delete.js') 0.1338505
require('path') 0.000005101
require('globby') 0.130279901
require('fs') 0.0000054
require('array-union') 0.0011302
require('array-uniq') 0.000630799
require('glob') 0.000301101
require('fast-glob') 0.12406219900000001
require('./out/index') 0.12356660100000001
require('./managers/options') 0.000348599
require('./managers/tasks') 0.1044062
require('../utils/pattern') 0.104075001
require('path') 0.0000055009999999999995
require('glob-parent') 0.0019341999999999999
require('path') 0.0000055009999999999995
require('is-glob') 0.0009602009999999999
require('is-extglob') 0.00044290000000000003
require('path-dirname') 0.000402899
require('os') 0.000004899
require('is-glob') 0.00035199900000000003
require('micromatch') 0.101330401
require('util') 0.000005999
require('braces') 0.07074169999999999
require('to-regex') 0.0121332
require('safe-regex') 0.002566999
require('ret') 0.001915001
require('./util') 0.0009576
require('./types') 0.0002745
require('./sets') 0.000323499
require('./types') 0.000003501
require('./types') 0.0000022009999999999998
require('./sets') 0.0000015
require('./positions') 0.00029820000000000004
require('./types') 0.000003401
require('define-property') 0.0036522
require('isobject') 0.0006114
require('is-descriptor') 0.002541101
require('kind-of') 0.000547499
require('is-accessor-descriptor') 0.000706399
require('kind-of') 0.00019769999999999998
require('is-data-descriptor') 0.000667899
require('kind-of') 0.0001924
require('extend-shallow') 0.0027659
require('is-extendable') 0.001652799
require('is-plain-object') 0.0011792
require('isobject') 0.00021290100000000001
require('assign-symbols') 0.0006109
require('regex-not') 0.0025461999999999998
require('extend-shallow') 0.0016283
require('is-extendable') 0.0007582
require('is-plain-object') 0.0003135
require('assign-symbols') 0.00030030000000000004
require('safe-regex') 0.0002961
require('array-unique') 0.000485499
require('extend-shallow') 0.0009573
require('is-extendable') 0.0004629
require('./lib/compilers') 0.0082795
require('./utils') 0.007871401
require('split-string') 0.0021728990000000003
require('extend-shallow') 0.001623901
require('is-extendable') 0.0008264
require('is-plain-object') 0.0003187
require('assign-symbols') 0.00029579899999999996
require('extend-shallow') 0.00019270000000000002
require('arr-flatten') 0.00048769899999999997
require('isobject') 0.000218201
require('fill-range') 0.0036016
require('util') 0.0000059
require('is-number') 0.001303699
require('kind-of') 0.0008250999999999999
require('is-buffer') 0.000310099
require('extend-shallow') 0.00018190100000000002
require('repeat-string') 0.000468499
require('to-regex-range') 0.0010333
require('repeat-string') 0.000208401
require('is-number') 0.0001881
require('repeat-element') 0.000470901
require('array-unique') 0.0002097
require('./lib/parsers') 0.0039686
require('snapdragon-node') 0.003570601
require('isobject') 0.00035680099999999996
require('define-property') 0.0008433000000000001
require('is-descriptor') 0.00034389999999999996
require('snapdragon-util') 0.0016902999999999998
require('kind-of') 0.0008546010000000001
require('is-buffer') 0.000323899
require('./utils') 0.000003501
require('./lib/braces') 0.0440279
require('extend-shallow') 0.000010301
require('snapdragon') 0.043441400000000005
require('base') 0.026702200000000002
require('util') 0.000006299
require('define-property') 0.0008186
require('is-descriptor') 0.000333299
require('cache-base') 0.013603001
require('isobject') 0.0002082
require('component-emitter') 0.0005212
require('collection-visit') 0.0019718
require('object-visit') 0.000698299
require('isobject') 0.000195301
require('map-visit') 0.0007717000000000001
require('util') 0.0000069
require('object-visit') 0.0001922
require('to-object-path') 0.001285999
require('kind-of') 0.0008217989999999999
require('is-buffer') 0.0003157
require('union-value') 0.002922999
require('is-extendable') 0.000201499
require('arr-union') 0.000462899
require('get-value') 0.0004894
require('set-value') 0.0012576
require('split-string') 0.0001988
require('extend-shallow') 0.0001827
require('is-plain-object') 0.0001828
require('is-extendable') 0.00017409900000000001
require('unset-value') 0.0031117
require('isobject') 0.000301099
require('has-value') 0.0023414990000000004
require('isobject') 0.0008812
require('isarray') 0.0004198
require('has-values') 0.0005585
require('get-value') 0.000403101
require('get-value') 0.000180101
require('has-value') 0.002426999
require('isobject') 0.0001912
require('has-values') 0.0015838
require('kind-of') 0.0008074989999999999
require('is-buffer') 0.0003144
require('is-number') 0.0002837
require('get-value') 0.00017810000000000002
require('set-value') 0.000180401
require('component-emitter') 0.000302601
require('isobject') 0.0002723
require('mixin-deep') 0.0018977
require('is-extendable') 0.0007693
require('is-plain-object') 0.00030889899999999996
require('for-in') 0.000538101
require('pascalcase') 0.0005465989999999999
require('class-utils') 0.008171099
require('util') 0.0000061
require('arr-union') 0.00020199900000000002
require('define-property') 0.004186101
require('is-descriptor') 0.003708701
require('kind-of') 0.000484099
require('is-accessor-descriptor') 0.0013951990000000002
require('kind-of') 0.000930699
require('is-buffer') 0.00042730000000000003
require('is-data-descriptor') 0.001355599
require('kind-of') 0.000892301
require('is-buffer') 0.0004052
require('static-extend') 0.0028508
require('object-copy') 0.0021769
require('kind-of') 0.0007811000000000001
require('is-buffer') 0.0003043
require('copy-descriptor') 0.000574399
require('define-property') 0.0002979
require('define-property') 0.00017380000000000002
require('util') 0.000004699
require('isobject') 0.000194101
require('define-property') 0.00030609999999999996
require('./lib/compiler') 0.0133305
require('use') 0.0006283990000000001
require('define-property') 0.0002923
require('debug') 0.0021579999999999998
require('./node.js') 0.001609299
require('tty') 0.0000057000000000000005
require('util') 0.000002801
require('./debug') 0.000896601
require('ms') 0.0005290010000000001
require('./utils') 0.009572599999999999
require('extend-shallow') 0.000342101
require('source-map') 0.004513799
require('./lib/source-map-generator') 0.0021997
require('./base64-vlq') 0.000613999
require('./base64') 0.000285301
require('./util') 0.0004184
require('./array-set') 0.000345499
require('./util') 0.000003801
require('./mapping-list') 0.000307899
require('./util') 0.000003599
require('./lib/source-map-consumer') 0.001286901
require('./util') 0.000003999
require('./binary-search') 0.0003078
require('./array-set') 0.000003201
require('./base64-vlq') 0.0000016999999999999998
require('./quick-sort') 0.00029369899999999997
require('./lib/source-node') 0.0005417999999999999
require('./source-map-generator') 0.000095901
require('./util') 0.0000027009999999999996
require('source-map-resolve') 0.0043706
require('source-map-url') 0.0007040999999999999
require('./resolve-url') 0.0002899
require('url') 0.0000056
require('./decode-uri-component') 0.000905701
require('decode-uri-component') 0.0006334
require('urix') 0.000608599
require('path') 0.0000071009999999999994
require('atob') 0.0009868
require('./lib/parser') 0.001654001
require('use') 0.000004100999999999999
require('util') 0.0000044
require('map-cache') 0.000678901
require('define-property') 0.000010701
require('debug') 0.0000025
require('./position') 0.00032129999999999995
require('define-property') 0.000010501
require('./utils') 0.0000025010000000000003
require('./lib/utils') 0.0000911
require('./compilers') 0.000107
require('./parsers') 0.000085701
require('./utils') 0.0000025999999999999997
require('./lib/utils') 0.0000855
require('to-regex') 0.0003141
require('extend-shallow') 0.0015956999999999998
require('is-extendable') 0.000784401
require('is-plain-object') 0.0003226
require('assign-symbols') 0.000311299
require('./lib/compilers') 0.022834599999999997
require('nanomatch') 0.0105401
require('util') 0.0000062
require('to-regex') 0.00031309999999999997
require('extend-shallow') 0.0015836
require('is-extendable') 0.0007762989999999999
require('is-plain-object') 0.0003182
require('assign-symbols') 0.0003124
require('./lib/compilers') 0.00041049999999999995
require('./lib/parsers') 0.0016092010000000002
require('regex-not') 0.0003347
require('to-regex') 0.0002765
require('./lib/cache') 0.0011453
require('fragment-cache') 0.000846799
require('map-cache') 0.0002129
require('./lib/utils') 0.004568599
require('path') 0.000005701
require('is-windows') 0.0003289
require('snapdragon') 0.00033159899999999997
require('define-property') 0.001133301
require('isobject') 0.000338001
require('is-descriptor') 0.00030659999999999997
require('arr-diff') 0.0005953000000000001
require('extend-shallow') 0.000179901
require('object.pick') 0.0008103
require('isobject') 0.0002119
require('kind-of') 0.0003273
require('array-unique') 0.0003133
require('extglob') 0.011938
require('extend-shallow') 0.0003128
require('array-unique') 0.000298999
require('to-regex') 0.00028349999999999995
require('./lib/compilers') 0.006883399
require('expand-brackets') 0.0065221
require('./lib/compilers') 0.000958799
require('posix-character-classes') 0.0006129
require('./lib/parsers') 0.001700599
require('./utils') 0.0009472
require('to-regex') 0.0003266
require('regex-not') 0.000307699
require('define-property') 0.0003133
require('debug') 0.0019760990000000003
require('./node.js') 0.0014602999999999999
require('tty') 0.0000073
require('util') 0.000003699
require('./debug') 0.0008809989999999999
require('ms') 0.000525601
require('extend-shallow') 0.00033539999999999997
require('snapdragon') 0.000296501
require('to-regex') 0.00029049999999999996
require('./lib/parsers') 0.002174099
require('expand-brackets') 0.000003999
require('define-property') 0.000828701
require('is-descriptor') 0.00032219999999999997
require('./utils') 0.000945101
require('regex-not') 0.00032499899999999997
require('fragment-cache') 0.0003043
require('./lib/extglob') 0.0011078
require('snapdragon') 0.000333601
require('define-property') 0.000003001
require('extend-shallow') 0.0002858
require('./compilers') 0.000080301
require('./parsers') 0.000073899
require('./lib/utils') 0.0000751
require('./lib/parsers') 0.000937601
require('extglob') 0.000003999
require('nanomatch') 0.0000022009999999999998
require('regex-not') 0.000325301
require('to-regex') 0.0002803
require('./lib/cache') 0.0005823009999999999
require('fragment-cache') 0.000325399
require('./lib/utils') 0.003336701
require('path') 0.000006
require('snapdragon') 0.0003196
require('define-property') 0.001141399
require('isobject') 0.0003201
require('is-descriptor') 0.000331901
require('arr-diff') 0.00030729899999999997
require('extend-shallow') 0.0001678
require('object.pick') 0.000309601
require('kind-of') 0.0003145
require('array-unique') 0.00030309900000000003
require('./providers/reader-async') 0.016170201
require('@mrmlnc/readdir-enhanced') 0.0059346
require('./sync') 0.003122801
require('../directory-reader') 0.002059199
require('stream') 0.000005699
require('events') 0.000003699
require('path') 0.000002199
require('./normalize-options') 0.001051499
require('path') 0.000004399
require('glob-to-regexp') 0.0006547009999999999
require('./stat') 0.0005880999999999999
require('./call') 0.0002906
require('./call') 0.000003
require('./fs') 0.000385301
require('fs') 0.0000055
require('../call') 0.00008450000000000001
require('./for-each') 0.000251199
require('./async') 0.001448699
require('call-me-maybe') 0.000623999
require('../directory-reader') 0.0000996
require('fs') 0.000004699
require('./for-each') 0.000257301
require('./stream') 0.0005812
require('../directory-reader') 0.000086701
require('fs') 0.000004401000000000001
require('../async/for-each') 0.0000765
require('./reader') 0.0073265000000000005
require('path') 0.0000055
require('./filters/deep') 0.0065122
require('../../utils/path') 0.0003435
require('path') 0.0000055009999999999995
require('../../utils/pattern') 0.0000932
require('./filters/entry') 0.00037189899999999997
require('../../utils/path') 0.000003801
require('../../utils/pattern') 0.0000066
require('../utils/path') 0.000087299
require('../adapters/fs-stream') 0.0024171
require('stream') 0.000005701
require('@nodelib/fs.stat') 0.001640201
require('./managers/options') 0.000662099
require('../adapters/fs') 0.0003411
require('fs') 0.0000057999999999999995
require('./providers/stat') 0.000339599
require('./fs') 0.000301101
require('path') 0.0000057999999999999995
require('./providers/reader-stream') 0.0004657
require('stream') 0.0000057999999999999995
require('@mrmlnc/readdir-enhanced') 0.000002999
require('./reader') 0.0000015
require('../adapters/fs-stream') 0.0000014
require('./providers/reader-sync') 0.000831699
require('@mrmlnc/readdir-enhanced') 0.000003701
require('./reader') 0.000001699
require('../adapters/fs-sync') 0.000408799
require('@nodelib/fs.stat') 0.000004601
require('./fs') 0.0000019
require('./utils/array') 0.00027620099999999995
require('./utils/stream') 0.0006552989999999999
require('merge2') 0.00037380000000000003
require('dir-glob') 0.0016483000000000001
require('path') 0.0000057000000000000005
require('path-type') 0.0011242000000000001
require('fs') 0.000005399
require('pify') 0.000480699
require('./gitignore') 0.0023352010000000003
require('fs') 0.0000047
require('path') 0.000003499
require('fast-glob') 0.000002199
require('ignore') 0.000677899
require('pify') 0.000614799
require('slash') 0.0005613
require('multimatch') 0.0020414
require('minimatch') 0.00032040000000000004
require('array-union') 0.000340001
require('array-differ') 0.000417101
require('arrify') 0.0004218
require('../util') 0.001234801
require('fs') 0.0000057999999999999995
require('path') 0.0000027009999999999996
require('commondir') 0.0006027010000000001
require('path') 0.000005701
require('glob') 0.0003091
require('./actions/copy.js') 0.0024001
require('assert') 0.000004699
require('fs') 0.000003201
require('path') 0.0000016999999999999998
require('glob') 0.000315
require('globby') 0.0000027
require('deep-extend') 0.0000016000000000000001
require('multimatch') 0.0000012999999999999998
require('ejs') 0.001719
require('fs') 0.0000059
require('path') 0.000002899
require('./utils') 0.0003486
require('../package.json') 0.000277999
require('../util') 0.000002999
require('./actions/copy.js') 0.0000019
require('./actions/copy-tpl.js') 0.0012818
require('deep-extend') 0.000003999
require('ejs') 0.0000019009999999999999
require('isbinaryfile') 0.0009733000000000001
require('fs') 0.0000056
require('util') 0.000002901
require('./actions/move.js') 0.000254901
require('./actions/commit.js') 0.009279299999999999
require('fs') 0.000004199
require('path') 0.0000022009999999999998
require('through2') 0.007273101
require('readable-stream') 0.006722799
require('stream') 0.000005499
require('./lib/_stream_readable.js') 0.0031719
require('events') 0.000005899
require('./internal/streams/stream') 0.00037569999999999997
require('stream') 0.0000055
require('buffer') 0.000003401
require('util') 0.000002301
require('./internal/streams/buffer_list') 0.000515801
require('buffer') 0.0000055009999999999995
require('util') 0.0000033999999999999996
require('./internal/streams/destroy') 0.0003182
require('./internal/streams/state') 0.0006916989999999999
require('../../../errors') 0.0003973
require('../errors') 0.000094701
require('inherits') 0.000356099
require('./lib/_stream_writable.js') 0.0010012
require('util-deprecate') 0.000366
require('./internal/streams/stream') 0.000003101
require('buffer') 0.0000027009999999999996
require('./internal/streams/destroy') 0.000001601
require('./internal/streams/state') 0.0000011
require('../errors') 0.0000055
require('inherits') 0.000006201
require('./lib/_stream_duplex.js') 0.000536999
require('./_stream_readable') 0.00008990099999999999
require('./_stream_writable') 0.000080801
require('inherits') 0.0000079
require('./lib/_stream_transform.js') 0.00044290000000000003
require('../errors') 0.000008
require('./_stream_duplex') 0.00008649999999999999
require('inherits') 0.0000076
require('./lib/_stream_passthrough.js') 0.000367801
require('./_stream_transform') 0.00008650099999999999
require('inherits') 0.0000078
require('./lib/internal/streams/end-of-stream.js') 0.000318801
require('../../../errors') 0.000003501
require('./lib/internal/streams/pipeline.js') 0.0003129
require('../../../errors') 0.000003499
require('util') 0.000004199
require('mkdirp') 0.0006974
require('path') 0.0000055
require('fs') 0.0000030990000000000003
require('rimraf') 0.0009999
require('assert') 0.0000056
require('path') 0.0000030990000000000003
require('fs') 0.0000023
require('glob') 0.00033329999999999997
require('enquirer') 0.000003101
require('./transforms/conflict-checker') 0.0401509
require('stream') 0.000009399
require('path') 0.000003401
require('diff') 0.008352901
require('./diff/base') 0.0005448990000000001
require('./diff/character') 0.0004326
require('./base') 0.00008939999999999999
require('./diff/word') 0.000761699
require('./base') 0.0000089
require('../util/params') 0.00034180100000000003
require('./diff/line') 0.000380401
require('./base') 0.0000087
require('../util/params') 0.000002899
require('./diff/sentence') 0.0004062
require('./base') 0.0000087
require('./diff/css') 0.000334899
require('./base') 0.0000081
require('./diff/json') 0.0005344
require('./base') 0.0000084
require('./line') 0.000095301
require('./diff/array') 0.00033810000000000003
require('./base') 0.000008599
require('./patch/apply') 0.0012121010000000002
require('./parse') 0.0003963
require('../util/distance-iterator') 0.000306
require('./patch/parse') 0.0000893
require('./patch/merge') 0.001410099
require('./create') 0.000555299
require('../diff/line') 0.00009840100000000001
require('./parse') 0.0000023990000000000002
require('../util/array') 0.0002766
require('./patch/create') 0.0000898
require('./convert/dmp') 0.0003125
require('./convert/xml') 0.0002821
require('fs-extra') 0.000226599
require('chalk') 0.0003004
require('enquirer') 0.0003461
require('../errors/prompt-aborted') 0.002168199
require('fs-readdir-recursive') 0.000741101
require('fs') 0.0000065
require('path') 0.0000032989999999999997
require('cross-spawn') 0.000353999
require('chalk') 0.0002906
require('username') 0.0181429
require('os') 0.000006099
require('execa') 0.0149687
require('path') 0.000005799000000000001
require('child_process') 0.0000032000000000000003
require('cross-spawn') 0.009196099999999999
require('child_process') 0.000005299
require('./lib/parse') 0.008274799
require('path') 0.000005601
require('nice-try') 0.0007869
require('./util/resolveCommand') 0.0021041
require('path') 0.0000055
require('which') 0.0010622000000000001
require('path') 0.000004899
require('isexe') 0.000215901
require('path-key') 0.000581901
require('./util/escape') 0.00027979999999999997
require('./util/readShebang') 0.001333899
require('fs') 0.000005399
require('shebang-command') 0.0010342
require('shebang-regex') 0.0004404
require('semver') 0.0014491
require('./lib/enoent') 0.00034529900000000003
require('strip-eof') 0.000616901
require('npm-run-path') 0.0010873010000000002
require('path') 0.000006
require('path-key') 0.000447801
require('is-stream') 0.0006102999999999999
require('get-stream') 0.001135899
require('pump') 0.000216901
require('./buffer-stream') 0.00028460000000000003
require('stream') 0.0000056
require('p-finally') 0.000585199
require('signal-exit') 0.000328
require('./lib/errname') 0.000340499
require('util') 0.0000055009999999999995
require('./lib/stdio') 0.0002858
require('mem') 0.002351199
require('mimic-fn') 0.000215799
require('p-is-promise') 0.000456199
require('map-age-cleaner') 0.0011256999999999999
require('p-defer') 0.00047790100000000003
require('fs-extra') 0.00021889900000000002
require('path') 0.000004899
require('../utils/replace-dependencies') 0.025917998999999997
require('fs-extra') 0.000264299
require('path') 0.000005701
require('../utils/get-latest-version') 0.0181466
require('./npm-fetch') 0.012816799
require('node-fetch') 0.008083999
require('stream') 0.0000072
require('http') 0.0011596
require('url') 0.000005001
require('https') 0.000763199
require('zlib') 0.0005431
require('encoding') 0.0038453
require('iconv-lite') 0.0025681
require('safer-buffer') 0.0006594
require('buffer') 0.000005899
require('./bom-handling') 0.00031140000000000003
require('./streams') 0.0004126
require('buffer') 0.0000066
require('stream') 0.000003501
require('./extend-node') 0.000393899
require('buffer') 0.000004299
require('./iconv-loader') 0.000641
require('../utils/replace-blitz-dependency') 0.004208801
require('fs-extra') 0.0000148
require('path') 0.0000044990000000000005
require('@blitzjs/server') 0.0004729
require('chalk') 0.0000079
require('chalk') 0.0000032989999999999997
require('hasbin') 0.002227
require('hasbin') 0.0022229999999999997
require('async') 0.0014095009999999999
require('fs') 0.000005801
require('path') 0.0000028
require('debug') 0.0003922
require('debug') 0.0003835
require('../errors/prompt-aborted') 0.0001531
require('../errors/prompt-aborted') 0.000140701
require('C:\dev\contrib\blitz\packages\cli\src\commands\start.ts') 0.008486401000000001
require('@oclif/command') 0.000014899
require('@blitzjs/server') 0.0000022009999999999998
require('./db') 0.000003801
require('C:\dev\contrib\blitz\packages\cli\src\commands\test.ts') 0.0075803
require('cross-spawn') 0.000013099
require('@oclif/command') 0.0000064000000000000006
require('has-yarn') 0.000812601
require('path') 0.0000069
require('fs') 0.000003701
require('debug') 0.0000049
TOTAL 2852.6080809999976
What happens when you run this @wKovacs64 ?
DEBUG=\* blitz new some_random_project
Anything strange?
Immediately, I see this:
@oclif/config reading core plugin C:\dev\contrib\blitz\packages\cli +0ms
@oclif/config loadJSON C:\dev\contrib\blitz\packages\cli\package.json +0ms
@oclif/config loadJSON C:\dev\contrib\blitz\packages\cli\oclif.manifest.json +2ms
@oclif/config loadJSON C:\dev\contrib\blitz\packages\cli\.oclif.manifest.json +1ms
@oclif/config registering ts-node at C:\dev\contrib\blitz\packages\cli +0ms
@oclif/config:@blitzjs/cli loading IDs from C:\dev\contrib\blitz\packages\cli\src\commands +0ms
@oclif/config:@blitzjs/cli found commands [ 'build', 'console', 'db', 'new', 'start', 'test' ] +6ms
@oclif/config:@blitzjs/cli require C:\dev\contrib\blitz\packages\cli\src\commands\build.ts +2ms
@oclif/config:@blitzjs/cli require C:\dev\contrib\blitz\packages\cli\src\commands\console.ts +244ms
Then the big delay. Once the delay is over, it continues with this:
@oclif/config:@blitzjs/cli require C:\dev\contrib\blitz\packages\cli\src\commands\db.ts +1m
@oclif/config:@blitzjs/cli require C:\dev\contrib\blitz\packages\cli\src\commands\new.ts +1ms
@oclif/config:@blitzjs/cli require C:\dev\contrib\blitz\packages\cli\src\commands\start.ts +380ms
@oclif/config:@blitzjs/cli require C:\dev\contrib\blitz\packages\cli\src\commands\test.ts +9ms
@oclif/config reading user plugins pjson C:\Users\Justin\AppData\Local\@blitzjs\cli\package.json +0ms
@oclif/config loadJSON C:\Users\Justin\AppData\Local\@blitzjs\cli\package.json +1m
followed by all the require statements previously reported.
Recorded a video of this for those unable to repro. This is on OSX Catalina. Node, NPM and Yarn versions are in the video. https://www.youtube.com/watch?v=HQgx8nUlFS0&feature=youtu.be total time to new is 3+ minutes when using npx (which adds some time, but eliminates the need for a global dep)
Couple things we can do in the short term:
Reproduced from source instead of npm binary with in same env as the above video using these steps:
cd ~/projects
git clone [email protected]:blitz-js/blitz.git
cd blitz
yarn
yarn build
cd ..
./blitz/packages/blitz/dist/cli.js new myblitzthing
So do we have an idea of what the root cause is?
I just discovered Blitz CLI is traversing the current directory contents for some reason (have not looked into why/where yet). I just got an ENAMETOOLONG error from Node while it was performing some recursion on a totally unrelated project. If you run blitz new foo in an empty directory, it's fast (no delay).
I have been console.logging through oclif dist files and narrowed it to the loop at https://github.com/oclif/config/blob/master/src/plugin.ts#L302 when id==="console". I haven't gone further but hopefully that helps.

ignore the 'build is the slow one'. build actually goes by really quickly but console on the other hand is super slow. eventually it makes it through the loop.
and here's the node_modules dist for oclif with my shitty console.logs

Ok this is the line it is hanging at: https://github.com/oclif/config/blob/master/src/plugin.ts#L257 and for me it is getting called with /Users/jcummins/projects/blitz/packages/cli/src/commands/console.ts
Ok please everyone take a look at PR #254. It looks like there were some side effects in one of the files the the console command was importing. I think made it so that importing the file alone would cause node to go to the file system. I wrapped the changes in a function calls so that simply importing the file should be idempotent and only a call to the function would cause a scan.
Most helpful comment
Hello guys, I've been trying to test this and im not seeing such delays.
Would any of you mind to add this at the very top of new.ts and run the new command?
This is my output