Выполнение команды кеширования терминала macos

Я не уверен, как это описать, я и мой коллега наблюдаем странное поведение в нашем проекте, выполнение команды кешируется, например:

пряжа строить

в первый раз это занимает отл. 10 минут в следующий раз это занимает 1 секунду и

Дата сборки: 2023-03-29T10:09:10.352Z — Хэш: a8f064e60c86c7e9 — Время: 105184 мс

то же самое для других команд, таких как

npx ng test noah-os --coverage

после первого раза он выполняется менее чем за 1 секунду, а тесты не выполняются, позже они терпят неудачу на сервере...

Что я заметил, если добавить любую случайную опцию

--browser=firefox1 ...фаерфокс2

в этом случае исполнение работает хорошо, с первого раза

Я использую узел 16, угловую настройку на Mac с zshell (bash такой же) Это более или менее новое, у нас нет идей... даже что гуглить.

nx build noah-os
+omz_termsupport_preexec:1> [[ '' != true ]]
+omz_termsupport_preexec:3> emulate -L zsh
+omz_termsupport_preexec:4> setopt extended_glob
+omz_termsupport_preexec:7> local -a cmdargs
+omz_termsupport_preexec:8> cmdargs=( nx build noah-os ) 
+omz_termsupport_preexec:10> [[ nx = fg ]]
+omz_termsupport_preexec:44> local CMD=nx
+omz_termsupport_preexec:45> local LINE='nx build noah-os'
+omz_termsupport_preexec:47> title nx '%100>...>nx build noah-os%<<'
+title:1> setopt localoptions nopromptsubst
+title:4> [[ -n '' ]]
+title:8> : '%100>...>nx build noah-os%<<'
+title:10> case xterm-256color (cygwin | xterm*)
+title:12> print -Pn '\e]2;%100\>...\>nx\ build\ noah-os%\<\<\a'
+title:13> print -Pn '\e]1;nx\a'
+__vsc_preexec:1> PS1=$'%(?:%{\C-[[01;32m%}➜ :%{\C-[[01;31m%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)' 
+__vsc_preexec:2> PS2='%_> ' 
+__vsc_preexec:3> [ -n '' ']'
+__vsc_preexec:6> __vsc_in_command_execution=1 
+__vsc_preexec:7> __vsc_current_command='nx build noah-os' 
+__vsc_preexec:8> __vsc_command_output_start
+__vsc_command_output_start:1> printf '\e]633;C\a'
+__vsc_command_output_start:2> __vsc_escape_value 'nx build noah-os'
+__vsc_escape_value:1> emulate -L zsh
+__vsc_escape_value:4> local 'LC_ALL=C' 'str=nx build noah-os' i byte token 'out='
+__vsc_escape_value:6> i = 0
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=n 
+__vsc_escape_value:10> [ n '=' '\' ']'
+__vsc_escape_value:12> [ n '=' ';' ']'
+__vsc_escape_value:15> token=n 
+__vsc_escape_value:18> out+=n 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=x 
+__vsc_escape_value:10> [ x '=' '\' ']'
+__vsc_escape_value:12> [ x '=' ';' ']'
+__vsc_escape_value:15> token=x 
+__vsc_escape_value:18> out+=x 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=' ' 
+__vsc_escape_value:10> [ ' ' '=' '\' ']'
+__vsc_escape_value:12> [ ' ' '=' ';' ']'
+__vsc_escape_value:15> token=' ' 
+__vsc_escape_value:18> out+=' ' 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=b 
+__vsc_escape_value:10> [ b '=' '\' ']'
+__vsc_escape_value:12> [ b '=' ';' ']'
+__vsc_escape_value:15> token=b 
+__vsc_escape_value:18> out+=b 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=u 
+__vsc_escape_value:10> [ u '=' '\' ']'
+__vsc_escape_value:12> [ u '=' ';' ']'
+__vsc_escape_value:15> token=u 
+__vsc_escape_value:18> out+=u 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=i 
+__vsc_escape_value:10> [ i '=' '\' ']'
+__vsc_escape_value:12> [ i '=' ';' ']'
+__vsc_escape_value:15> token=i 
+__vsc_escape_value:18> out+=i 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=l 
+__vsc_escape_value:10> [ l '=' '\' ']'
+__vsc_escape_value:12> [ l '=' ';' ']'
+__vsc_escape_value:15> token=l 
+__vsc_escape_value:18> out+=l 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=d 
+__vsc_escape_value:10> [ d '=' '\' ']'
+__vsc_escape_value:12> [ d '=' ';' ']'
+__vsc_escape_value:15> token=d 
+__vsc_escape_value:18> out+=d 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=' ' 
+__vsc_escape_value:10> [ ' ' '=' '\' ']'
+__vsc_escape_value:12> [ ' ' '=' ';' ']'
+__vsc_escape_value:15> token=' ' 
+__vsc_escape_value:18> out+=' ' 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=n 
+__vsc_escape_value:10> [ n '=' '\' ']'
+__vsc_escape_value:12> [ n '=' ';' ']'
+__vsc_escape_value:15> token=n 
+__vsc_escape_value:18> out+=n 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=o 
+__vsc_escape_value:10> [ o '=' '\' ']'
+__vsc_escape_value:12> [ o '=' ';' ']'
+__vsc_escape_value:15> token=o 
+__vsc_escape_value:18> out+=o 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=a 
+__vsc_escape_value:10> [ a '=' '\' ']'
+__vsc_escape_value:12> [ a '=' ';' ']'
+__vsc_escape_value:15> token=a 
+__vsc_escape_value:18> out+=a 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=h 
+__vsc_escape_value:10> [ h '=' '\' ']'
+__vsc_escape_value:12> [ h '=' ';' ']'
+__vsc_escape_value:15> token=h 
+__vsc_escape_value:18> out+=h 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=- 
+__vsc_escape_value:10> [ - '=' '\' ']'
+__vsc_escape_value:12> [ - '=' ';' ']'
+__vsc_escape_value:15> token=- 
+__vsc_escape_value:18> out+=- 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=o 
+__vsc_escape_value:10> [ o '=' '\' ']'
+__vsc_escape_value:12> [ o '=' ';' ']'
+__vsc_escape_value:15> token=o 
+__vsc_escape_value:18> out+=o 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:7> byte=s 
+__vsc_escape_value:10> [ s '=' '\' ']'
+__vsc_escape_value:12> [ s '=' ';' ']'
+__vsc_escape_value:15> token=s 
+__vsc_escape_value:18> out+=s 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 16
+__vsc_escape_value:21> print -r 'nx build noah-os'
+__vsc_command_output_start:2> printf '\e]633;E;%s\a' 'nx build noah-os'
+/bin/zsh:3> nx build noah-os

> nx run noah-os:build  [local cache]


Initial Chunk Files                                                                                     | Names                                                                   |  Raw Size
vendor.js                                                                                               | vendor                                                                  |   8.82 MB | 
main.js                                                                                                 | main                                                                    |   3.70 MB | 
dhtmlx-spreadsheet.js                                                                                   | dhtmlx-spreadsheet                                                      |   1.89 MB | 
dhtmlx-dhtmlxscheduler.js                                                                               | dhtmlx-dhtmlxscheduler                                                  |   1.08 MB | 
polyfills.js                                                                                            | polyfills                                                               | 978.25 kB | 
mainstyles.css                                                                                          | mainstyles                                                              | 615.32 kB | 
scripts.js                                                                                              | scripts                                                                 | 221.90 kB | 
runtime.js[39m                                                                                              | runtime                                                                 |  13.36 kB | 

                                                                                                        | Initial Total                                                           |  17.27 MB

Lazy Chunk Files                                                                                        | Names                                                                   |  Raw Size
apps_noah-os_src_app_pages_scheduling_scheduling_module_ts.js                                           | fe-pages-scheduling-scheduling-module                                   |   1.15 MB | 
....
apps_noah-os_src_app_pages_contracts_contracts_module_ts.js                                             | fe-pages-contracts-contracts-module                                     |   4.32 kB | 

Build at: 2023-03-29T19:17:03.538Z - Hash: 6f0ff3e5aa9953f5 - Time: 76773ms

 —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

 >  NX   Successfully ran target build for project noah-os (302ms)
 
   Nx read the output from the cache instead of running the command for 1 out of 1 tasks.
 
+omz_termsupport_precmd:1> [[ '' != true ]]                                                                                                                                                        
+omz_termsupport_precmd:2> title '%15<..<%~%<<' '%n@%m:%~'
+title:1> setopt localoptions nopromptsubst
+title:4> [[ -n '' ]]
+title:8> : '%n@%m:%~'
+title:10> case xterm-256color (cygwin | xterm*)
+title:12> print -Pn '\e]2;%n@%m:%~\a'
+title:13> print -Pn '\e]1;%15\<..\<%~%\<\<\a'
+__vsc_precmd:1> local __vsc_status=0
+__vsc_precmd:2> [ -z 1 ']'
+__vsc_precmd:7> __vsc_command_complete 0
+__vsc_command_complete:1> [[ 'nx build noah-os' ==  ]]
+__vsc_command_complete:4> printf '\e]633;D;%s\a' 0
+__vsc_command_complete:6> __vsc_update_cwd
+__vsc_update_cwd:1> __vsc_escape_value /Users/fribu/Sites/noah/noah-fe
+__vsc_escape_value:1> emulate -L zsh
+__vsc_escape_value:4> local 'LC_ALL=C' 'str=/Users/fribu/Sites/noah/noah-fe' i byte token 'out='
+__vsc_escape_value:6> i = 0
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=/ 
+__vsc_escape_value:10> [ / '=' '\' ']'
+__vsc_escape_value:12> [ / '=' ';' ']'
+__vsc_escape_value:15> token=/ 
+__vsc_escape_value:18> out+=/ 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=U 
+__vsc_escape_value:10> [ U '=' '\' ']'
+__vsc_escape_value:12> [ U '=' ';' ']'
+__vsc_escape_value:15> token=U 
+__vsc_escape_value:18> out+=U 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=s 
+__vsc_escape_value:10> [ s '=' '\' ']'
+__vsc_escape_value:12> [ s '=' ';' ']'
+__vsc_escape_value:15> token=s 
+__vsc_escape_value:18> out+=s 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=e 
+__vsc_escape_value:10> [ e '=' '\' ']'
+__vsc_escape_value:12> [ e '=' ';' ']'
+__vsc_escape_value:15> token=e 
+__vsc_escape_value:18> out+=e 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=r 
+__vsc_escape_value:10> [ r '=' '\' ']'
+__vsc_escape_value:12> [ r '=' ';' ']'
+__vsc_escape_value:15> token=r 
+__vsc_escape_value:18> out+=r 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=s 
+__vsc_escape_value:10> [ s '=' '\' ']'
+__vsc_escape_value:12> [ s '=' ';' ']'
+__vsc_escape_value:15> token=s 
+__vsc_escape_value:18> out+=s 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=/ 
+__vsc_escape_value:10> [ / '=' '\' ']'
+__vsc_escape_value:12> [ / '=' ';' ']'
+__vsc_escape_value:15> token=/ 
+__vsc_escape_value:18> out+=/ 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=f 
+__vsc_escape_value:10> [ f '=' '\' ']'
+__vsc_escape_value:12> [ f '=' ';' ']'
+__vsc_escape_value:15> token=f 
+__vsc_escape_value:18> out+=f 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=r 
+__vsc_escape_value:10> [ r '=' '\' ']'
+__vsc_escape_value:12> [ r '=' ';' ']'
+__vsc_escape_value:15> token=r 
+__vsc_escape_value:18> out+=r 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=i 
+__vsc_escape_value:10> [ i '=' '\' ']'
+__vsc_escape_value:12> [ i '=' ';' ']'
+__vsc_escape_value:15> token=i 
+__vsc_escape_value:18> out+=i 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=b 
+__vsc_escape_value:10> [ b '=' '\' ']'
+__vsc_escape_value:12> [ b '=' ';' ']'
+__vsc_escape_value:15> token=b 
+__vsc_escape_value:18> out+=b 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=u 
+__vsc_escape_value:10> [ u '=' '\' ']'
+__vsc_escape_value:12> [ u '=' ';' ']'
+__vsc_escape_value:15> token=u 
+__vsc_escape_value:18> out+=u 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=/ 
+__vsc_escape_value:10> [ / '=' '\' ']'
+__vsc_escape_value:12> [ / '=' ';' ']'
+__vsc_escape_value:15> token=/ 
+__vsc_escape_value:18> out+=/ 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=S 
+__vsc_escape_value:10> [ S '=' '\' ']'
+__vsc_escape_value:12> [ S '=' ';' ']'
+__vsc_escape_value:15> token=S 
+__vsc_escape_value:18> out+=S 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=i 
+__vsc_escape_value:10> [ i '=' '\' ']'
+__vsc_escape_value:12> [ i '=' ';' ']'
+__vsc_escape_value:15> token=i 
+__vsc_escape_value:18> out+=i 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=t 
+__vsc_escape_value:10> [ t '=' '\' ']'
+__vsc_escape_value:12> [ t '=' ';' ']'
+__vsc_escape_value:15> token=t 
+__vsc_escape_value:18> out+=t 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=e 
+__vsc_escape_value:10> [ e '=' '\' ']'
+__vsc_escape_value:12> [ e '=' ';' ']'
+__vsc_escape_value:15> token=e 
+__vsc_escape_value:18> out+=e 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=s 
+__vsc_escape_value:10> [ s '=' '\' ']'
+__vsc_escape_value:12> [ s '=' ';' ']'
+__vsc_escape_value:15> token=s 
+__vsc_escape_value:18> out+=s 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=/ 
+__vsc_escape_value:10> [ / '=' '\' ']'
+__vsc_escape_value:12> [ / '=' ';' ']'
+__vsc_escape_value:15> token=/ 
+__vsc_escape_value:18> out+=/ 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=n 
+__vsc_escape_value:10> [ n '=' '\' ']'
+__vsc_escape_value:12> [ n '=' ';' ']'
+__vsc_escape_value:15> token=n 
+__vsc_escape_value:18> out+=n 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=o 
+__vsc_escape_value:10> [ o '=' '\' ']'
+__vsc_escape_value:12> [ o '=' ';' ']'
+__vsc_escape_value:15> token=o 
+__vsc_escape_value:18> out+=o 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=a 
+__vsc_escape_value:10> [ a '=' '\' ']'
+__vsc_escape_value:12> [ a '=' ';' ']'
+__vsc_escape_value:15> token=a 
+__vsc_escape_value:18> out+=a 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=h 
+__vsc_escape_value:10> [ h '=' '\' ']'
+__vsc_escape_value:12> [ h '=' ';' ']'
+__vsc_escape_value:15> token=h 
+__vsc_escape_value:18> out+=h 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=/ 
+__vsc_escape_value:10> [ / '=' '\' ']'
+__vsc_escape_value:12> [ / '=' ';' ']'
+__vsc_escape_value:15> token=/ 
+__vsc_escape_value:18> out+=/ 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=n 
+__vsc_escape_value:10> [ n '=' '\' ']'
+__vsc_escape_value:12> [ n '=' ';' ']'
+__vsc_escape_value:15> token=n 
+__vsc_escape_value:18> out+=n 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=o 
+__vsc_escape_value:10> [ o '=' '\' ']'
+__vsc_escape_value:12> [ o '=' ';' ']'
+__vsc_escape_value:15> token=o 
+__vsc_escape_value:18> out+=o 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=a 
+__vsc_escape_value:10> [ a '=' '\' ']'
+__vsc_escape_value:12> [ a '=' ';' ']'
+__vsc_escape_value:15> token=a 
+__vsc_escape_value:18> out+=a 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=h 
+__vsc_escape_value:10> [ h '=' '\' ']'
+__vsc_escape_value:12> [ h '=' ';' ']'
+__vsc_escape_value:15> token=h 
+__vsc_escape_value:18> out+=h 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=- 
+__vsc_escape_value:10> [ - '=' '\' ']'
+__vsc_escape_value:12> [ - '=' ';' ']'
+__vsc_escape_value:15> token=- 
+__vsc_escape_value:18> out+=- 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=f 
+__vsc_escape_value:10> [ f '=' '\' ']'
+__vsc_escape_value:12> [ f '=' ';' ']'
+__vsc_escape_value:15> token=f 
+__vsc_escape_value:18> out+=f 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:7> byte=e 
+__vsc_escape_value:10> [ e '=' '\' ']'
+__vsc_escape_value:12> [ e '=' ';' ']'
+__vsc_escape_value:15> token=e 
+__vsc_escape_value:18> out+=e 
+__vsc_escape_value:6> ++i 
+__vsc_escape_value:6> i < 31
+__vsc_escape_value:21> print -r /Users/fribu/Sites/noah/noah-fe
+__vsc_update_cwd:1> printf '\e]633;P;Cwd=%s\a' /Users/fribu/Sites/noah/noah-fe
+__vsc_precmd:8> __vsc_current_command='' 
+__vsc_precmd:11> [ -n 1 ']'
+__vsc_precmd:13> __vsc_update_prompt
+__vsc_update_prompt:1> __vsc_prior_prompt=$'%(?:%{\C-[[01;32m%}➜ :%{\C-[[01;31m%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)' 
+__vsc_update_prompt:2> __vsc_prior_prompt2='%_> ' 
+__vsc_update_prompt:3> __vsc_in_command_execution='' 
+__vsc_update_prompt:4> PS1=+__vsc_update_prompt:4> __vsc_prompt_start
+__vsc_prompt_start:1> printf '\e]633;A\a'
+__vsc_update_prompt:4> PS1=+__vsc_update_prompt:4> __vsc_prompt_end
+__vsc_prompt_end:1> printf '\e]633;B\a'
+__vsc_update_prompt:4> PS1=$'%{\C-[]633;A\C-G%}%(?:%{\C-[[01;32m%}➜ :%{\C-[[01;31m%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)%{\C-[]633;B\C-G%}' 
+__vsc_update_prompt:5> PS2=+__vsc_update_prompt:5> __vsc_continuation_start
+__vsc_continuation_start:1> printf '\e]633;F\a'
+__vsc_update_prompt:5> PS2=+__vsc_update_prompt:5> __vsc_continuation_end
+__vsc_continuation_end:1> printf '\e]633;G\a'
+__vsc_update_prompt:5> PS2=$'%{\C-[]633;F\C-G%}%_> %{\C-[]633;G\C-G%}' 
+__vsc_update_prompt:6> [ -n '' ']'
+/bin/zsh:4> git_prompt_info
+git_prompt_info:3> __git_prompt_git rev-parse --git-dir
+git_prompt_info:4> [[+git_prompt_info:4> __git_prompt_git config --get oh-my-zsh.hide-info
+git_prompt_info:4> [[ '' == 1 ]]
+git_prompt_info:8> local ref
+git_prompt_info:9> ref=+git_prompt_info:9> __git_prompt_git symbolic-ref --short HEAD
+git_prompt_info:9> ref=develop 
+git_prompt_info:14> local upstream
+git_prompt_info:15> ((  0  ))
+git_prompt_info:20> parse_git_dirty
+parse_git_dirty:1> local STATUS
+parse_git_dirty:2> local -a FLAGS
+parse_git_dirty:3> FLAGS=( --porcelain ) 
+parse_git_dirty:4> [[+parse_git_dirty:4> __git_prompt_git config --get oh-my-zsh.hide-dirty
+__git_prompt_git:1> GIT_OPTIONAL_LOCKS=0 git config --get oh-my-zsh.hide-dirty
+parse_git_dirty:4> [[ '' != 1 ]]
+parse_git_dirty:5> [[ '' == true ]]
+parse_git_dirty:8> case  (git)
+parse_git_dirty:8> case  (*)
+parse_git_dirty:15> FLAGS+='--ignore-submodules=dirty' 
+parse_git_dirty:18> STATUS=+parse_git_dirty:18> STATUS=+parse_git_dirty:18> tail -n 1
+parse_git_dirty:18> STATUS='' 
+parse_git_dirty:20> [[ -n '' ]]
+parse_git_dirty:23> echo $'%{\C-[[34m%})'
+git_prompt_info:20> echo $'%{\C-[[01;34m%}git:(%{\C-[[31m%}develop%{\C-[[34m%})%{\C-[[00m%} '

Это поведение пряжи, а не баша. (Есть ли у нас близкая причина для «основанного на ложной предпосылке»?)

Charles Duffy 29.03.2023 21:16

@CharlesDuffy это не проблема пряжи, если я запускаю команду напрямую, результат тот же

Alexander_F 29.03.2023 21:17

Если вы запустите свою команду, скажем, с помощью Python subprocess.run(['yarn', 'build'], shell=False), вы увидите то же самое поведение без участия оболочки.

Charles Duffy 29.03.2023 21:18

Тем не менее, если вы считаете, что может быть функция оболочки, переопределяющая поведение оболочки по умолчанию, запустите set -x, чтобы включить ведение журнала трассировки.

Charles Duffy 29.03.2023 21:19

«если я запускаю команду напрямую, результат будет таким же» - я явно неправильно понимаю, что вы имеете в виду, потому что я не понимаю, как это подразумевает что-либо о кэшировании оболочки. (Может быть, более подробно о том, что вы подразумеваете под «командой» или «непосредственно»). Но все это спорно, если включение ведения журнала трассировки, конечно, показывает какое-то кэширование, или, что более вероятно, если это не так.

Charles Duffy 29.03.2023 21:23

@CharlesDuffy еще раз, если бы я знал, чем это может быть вызвано, я бы погуглил. Это лучшее предположение, которое у меня было. Раньше я запускал тесты с ng test, тесты работали хорошо, но однажды появилась эта проблема, и тест завершился менее чем за 1 секунду. Я попытался поэкспериментировать с вариантами, и мне показалось, что это помогло. По крайней мере, на данный момент. Но это остающаяся проблема.

Alexander_F 29.03.2023 21:28

@CharlesDuffy Я добавил вывод set -X. Не знаю, что искать :)

Alexander_F 29.03.2023 21:31

Прочитав его до сих пор, похоже, что речь идет в основном о выяснении того, как напечатать ваше приглашение, а не о кэшировании.

Charles Duffy 29.03.2023 23:09

Подумайте о том, чтобы set -x; yarn build; set +x включить ведение журнала трассировки для yarn build, но не на время печати вашего приглашения.

Charles Duffy 29.03.2023 23:10

(есть также куча того, что, как я предполагаю, является бесполезной поддержкой oh-my-zsh, но он перехватывает только определенные команды, такие как fg; насколько я могу судить, я не вижу, чтобы он пытался облажаться с nx).

Charles Duffy 29.03.2023 23:14

...чтобы было ясно, добавление опций для аннулирования кеша вполне нормально, если ваша система кеширования хорошо спроектирована; но это не свидетельствует о том, что оболочка участвует в этом механизме кэширования; это просто механизм, в котором где-то ниже по течению есть механизм кэширования, и это нормально для любой достаточно зрелой экосистемы сборки.

Charles Duffy 29.03.2023 23:15

Во всяком случае, могу ли я попросить вас объяснить, как будто мне 5 лет, в отношении подтверждающих доказательств того, что это функция оболочки, а не функция пряжи или npx?

Charles Duffy 29.03.2023 23:16

если я запускаю команду напрямую... Что вы подразумеваете под «напрямую»? Просто build вместо yarn build? Это не имеет смысла для меня.

user1934428 30.03.2023 09:15

Это не имеет ничего общего с терминалом или вашей оболочкой. Вы просто продемонстрировали, что два инструмента сборки (yarn и nx) делают то, что должны делать инструменты сборки: не перестраивают то, что не изменилось с момента последней сборки.

chepner 30.03.2023 13:47
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
14
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я уверен, что ответ может быть довольно простым, просто попробуйте сделать

nx clear-cache

перед твоими тестами

Другие вопросы по теме