diff options
author | khoden <khoden@yandex-team.com> | 2023-09-08 15:29:00 +0300 |
---|---|---|
committer | khoden <khoden@yandex-team.com> | 2023-09-08 15:56:50 +0300 |
commit | 1327369eb8af90ffcedd1ea4f256c374c52097e1 (patch) | |
tree | a9c6154771777732ad4d1e568ca0de9b38dfab12 /build/conf/ts/ts.conf | |
parent | 2a4344f50e5d190be68407dca1cada777cb04c45 (diff) | |
download | ydb-1327369eb8af90ffcedd1ea4f256c374c52097e1.tar.gz |
Изменить логику дискаверинга исходников для TS_*
### Принцип работы:
1. В переменную с помощью `_GLOB` записываем все файлы (*.ts *.tsx *.js *.jsx *.json) проекта, кроме дефолтного списка исключений (типа `node_modules`, `dist/build`, `a.yaml`, `ya.make`, `package.json`, `pnpm-lock.yaml` и подобные)
2. Вызываем плагин (`_TS_CONFIGURE`), где удаляем из этого списка файлы, не покрываемые `tsconfig.json`
3. Получившееся значение используем в качестве источника инпутов для таргета
Diffstat (limited to 'build/conf/ts/ts.conf')
-rw-r--r-- | build/conf/ts/ts.conf | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/build/conf/ts/ts.conf b/build/conf/ts/ts.conf index 2812035788..dbf05d48b0 100644 --- a/build/conf/ts/ts.conf +++ b/build/conf/ts/ts.conf @@ -6,6 +6,8 @@ NOTS_TOOL_BASE_ARGS=--build-root $ARCADIA_BUILD_ROOT --bindir $BINDIR --curdir $ NOTS_TOOL_NODE_MODULES_BUNDLE=$BINDIR/node_modules.tar ERM_PACKAGES_PATH=devtools/frontend_build_platform/erm/erm-packages.json +TS_CONFIG_PATH=tsconfig.json + module _TS_BASE_UNIT: _BARE_UNIT { # Propagates peers to related modules .PEERDIR_POLICY=as_build_from @@ -44,6 +46,38 @@ macro _TS_CONFIG_EPILOGUE() { _SETUP_EXTRACT_NODE_MODULES_RECIPE(${MODDIR}) } + +# List of the inputs, filled in _TS_GLOB. Will be reduced in _TS_CONFIGURE macro. +# Used as inputs in TS_COMPILE through `$_TS_GLOB_AS_INPUTS(IN $TS_GLOB_FILES)` +TS_GLOB_FILES= + +# Hardcoded "include" list (all other files will be ignored) +TS_GLOB_INCLUDE=**/* + +# Hardcoded "exclude" list (reasonable default). +TS_GLOB_EXCLUDE=$TS_CONFIG_PATH \ + ya.make a.yaml \ + (.code|.idea)/**/* \ + (build|dist|bundle|.*|$TS_NEXT_OUTPUT_DIR)/**/* \ + node_modules/**/* package.json pnpm-lock.yaml .* \ + tests/**/* **/*.(test|spec).(ts|tsx|js|jsx) + + +### _TS_GLOB() # internal +### +### Fill $TS_GLOB_FILES with potential inputs. +### It will be reduced later in _TS_CONFIGURE based on `tsconfig.json` rules. +### So it is important to call _TS_CONFIGURE() with _TS_GLOB()! +macro _TS_GLOB() { + _GLOB(TS_GLOB_FILES $TS_GLOB_INCLUDE EXCLUDE $TS_GLOB_EXCLUDE) +} + +# Ugly hack for using inputs from the variable +macro _TS_GLOB_AS_INPUTS(IN{input}[]) { + .CMD=${input;hide:IN} +} + + _TS_FILES_COPY_CMD= ### TS_FILES(Files...) |