aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkhoden <khoden@yandex-team.com>2023-08-22 10:34:56 +0300
committerkhoden <khoden@yandex-team.com>2023-08-22 10:55:15 +0300
commit3c6da87778f43e0094756590180e63c18c492750 (patch)
tree619c3fc02482b12a4d3c4cb10b08b9db5e69852f
parentc556bbe03b2d7e9d995cee2936e9d8251282c6d9 (diff)
downloadydb-3c6da87778f43e0094756590180e63c18c492750.tar.gz
vite: MVP (Result of research)
Обеспечена успешная сборка dummy для простого Реакт-приложения, созданного командой `pnpm create vite` Реализована практически 100% копипастой реализации для webpack
-rw-r--r--build/conf/ts/ts.conf1
-rw-r--r--build/conf/ts/ts_vite_bundle.conf59
2 files changed, 60 insertions, 0 deletions
diff --git a/build/conf/ts/ts.conf b/build/conf/ts/ts.conf
index 385d85becb0..e34f7d6a196 100644
--- a/build/conf/ts/ts.conf
+++ b/build/conf/ts/ts.conf
@@ -47,3 +47,4 @@ macro _TS_CONFIG_EPILOGUE() {
@import "${CONF_ROOT}/conf/ts/ts_library.conf"
@import "${CONF_ROOT}/conf/ts/ts_next.conf"
@import "${CONF_ROOT}/conf/ts/ts_test.conf"
+@import "${CONF_ROOT}/conf/ts/ts_vite_bundle.conf"
diff --git a/build/conf/ts/ts_vite_bundle.conf b/build/conf/ts/ts_vite_bundle.conf
new file mode 100644
index 00000000000..bd9b5d38d6f
--- /dev/null
+++ b/build/conf/ts/ts_vite_bundle.conf
@@ -0,0 +1,59 @@
+# VITE_ROOT is defined by _PEERDIR_TS_RESOURCE(vite)
+VITE_ROOT=
+VITE_OUTPUT_DIR=dist
+VITE_CONFIG_PATH=vite.config.ts
+
+TS_BUNDLE_VITE=$TOUCH_UNIT \
+ && $ADD_VCS_INFO_FILE_CMD \
+ && ${cwd:BINDIR} $NOTS_TOOL bundle-vite $NOTS_TOOL_BASE_ARGS --vite-resource $VITE_ROOT \
+ --moddir $MODDIR --vite-config ${input:VITE_CONFIG_PATH} --ts-config ${input:TS_CONFIG_PATH} \
+ --vcs-info "${VCS_INFO_FILE}" --output-dir ${VITE_OUTPUT_DIR} \
+ --node-modules-bundle $NOTS_TOOL_NODE_MODULES_BUNDLE $NODE_MODULES_BUNDLE_AS_OUTPUT ${hide:PEERS} \
+ ${input;hide:"./package.json"} ${TS_CONFIG_FILES} ${output;hide:"output.tar"} \
+ ${output;hide:"package.json"} ${kv;hide:"p VB"} ${kv;hide:"pc magenta"}
+
+### @usage: VITE_OUTPUT(DirName)
+###
+### Macro sets the output directory name for TS_VITE_BUNDLE module.
+###
+### - DirName - output directory name ("dist" by default).
+macro VITE_OUTPUT(DirName) {
+ SET(VITE_OUTPUT_DIR $DirName)
+}
+
+### @usage: TS_VITE_BUNDLE([name])
+###
+### The Vite bundle, bundles JavaScript code.
+### Build results are packed as `output.tar`.
+###
+### @example
+###
+### TS_VITE_BUNDLE()
+### SRCS(src/index.ts)
+### END()
+###
+multimodule TS_VITE_BUNDLE {
+ module BUILD: _TS_BASE_UNIT {
+ .CMD=TS_BUNDLE_VITE
+ .PEERDIRSELF=NODE_MODULES
+ # epilogue is not inherited from TS_LIBRARY
+ .EPILOGUE=_TS_CONFIG_EPILOGUE
+
+ # by default multimodule overrides inherited MODULE_TAG to submodule name (BUILD in this case)
+ # but we have to set it to TS for include processor to work
+ SET(MODULE_TAG TS)
+
+ _PEERDIR_TS_RESOURCE(vite)
+ SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS ${CURDIR}/${TS_CONFIG_PATH} ${CURDIR}/package.json)
+ SET(TS_CONFIG_DEDUCE_OUT no)
+
+ _TS_CONFIGURE($TS_CONFIG_PATH)
+
+ # we should set NODE_MODULES_BUNDLE_AS_OUTPUT conditionally,
+ # based on whether module has deps or doesn't have
+ _SET_NODE_MODULES_BUNDLE_AS_OUTPUT()
+ }
+
+ module NODE_MODULES: _NODE_MODULES_BASE {
+ }
+}