Я не уверен, как это описать, я и мой коллега наблюдаем странное поведение в нашем проекте, выполнение команды кешируется, например:
пряжа строить
в первый раз это занимает отл. 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%} '
@CharlesDuffy это не проблема пряжи, если я запускаю команду напрямую, результат тот же
Если вы запустите свою команду, скажем, с помощью Python subprocess.run(['yarn', 'build'], shell=False)
, вы увидите то же самое поведение без участия оболочки.
Тем не менее, если вы считаете, что может быть функция оболочки, переопределяющая поведение оболочки по умолчанию, запустите set -x
, чтобы включить ведение журнала трассировки.
«если я запускаю команду напрямую, результат будет таким же» - я явно неправильно понимаю, что вы имеете в виду, потому что я не понимаю, как это подразумевает что-либо о кэшировании оболочки. (Может быть, более подробно о том, что вы подразумеваете под «командой» или «непосредственно»). Но все это спорно, если включение ведения журнала трассировки, конечно, показывает какое-то кэширование, или, что более вероятно, если это не так.
@CharlesDuffy еще раз, если бы я знал, чем это может быть вызвано, я бы погуглил. Это лучшее предположение, которое у меня было. Раньше я запускал тесты с ng test
, тесты работали хорошо, но однажды появилась эта проблема, и тест завершился менее чем за 1 секунду. Я попытался поэкспериментировать с вариантами, и мне показалось, что это помогло. По крайней мере, на данный момент. Но это остающаяся проблема.
@CharlesDuffy Я добавил вывод set -X. Не знаю, что искать :)
Прочитав его до сих пор, похоже, что речь идет в основном о выяснении того, как напечатать ваше приглашение, а не о кэшировании.
Подумайте о том, чтобы set -x; yarn build; set +x
включить ведение журнала трассировки для yarn build
, но не на время печати вашего приглашения.
(есть также куча того, что, как я предполагаю, является бесполезной поддержкой oh-my-zsh, но он перехватывает только определенные команды, такие как fg
; насколько я могу судить, я не вижу, чтобы он пытался облажаться с nx).
...чтобы было ясно, добавление опций для аннулирования кеша вполне нормально, если ваша система кеширования хорошо спроектирована; но это не свидетельствует о том, что оболочка участвует в этом механизме кэширования; это просто механизм, в котором где-то ниже по течению есть механизм кэширования, и это нормально для любой достаточно зрелой экосистемы сборки.
Во всяком случае, могу ли я попросить вас объяснить, как будто мне 5 лет, в отношении подтверждающих доказательств того, что это функция оболочки, а не функция пряжи или npx?
если я запускаю команду напрямую... Что вы подразумеваете под «напрямую»? Просто build
вместо yarn build
? Это не имеет смысла для меня.
Это не имеет ничего общего с терминалом или вашей оболочкой. Вы просто продемонстрировали, что два инструмента сборки (yarn
и nx
) делают то, что должны делать инструменты сборки: не перестраивают то, что не изменилось с момента последней сборки.
Я уверен, что ответ может быть довольно простым, просто попробуйте сделать
nx clear-cache
перед твоими тестами
Это поведение пряжи, а не баша. (Есть ли у нас близкая причина для «основанного на ложной предпосылке»?)