aboutsummaryrefslogtreecommitdiffstats
path: root/build/conf/ts/ts.conf
diff options
context:
space:
mode:
authorkhoden <khoden@yandex-team.com>2023-09-08 15:29:00 +0300
committerkhoden <khoden@yandex-team.com>2023-09-08 15:56:50 +0300
commit1327369eb8af90ffcedd1ea4f256c374c52097e1 (patch)
treea9c6154771777732ad4d1e568ca0de9b38dfab12 /build/conf/ts/ts.conf
parent2a4344f50e5d190be68407dca1cada777cb04c45 (diff)
downloadydb-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.conf34
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...)