diff options
author | khoden <khoden@yandex-team.com> | 2023-08-22 10:34:56 +0300 |
---|---|---|
committer | khoden <khoden@yandex-team.com> | 2023-08-22 10:55:15 +0300 |
commit | 3c6da87778f43e0094756590180e63c18c492750 (patch) | |
tree | 619c3fc02482b12a4d3c4cb10b08b9db5e69852f | |
parent | c556bbe03b2d7e9d995cee2936e9d8251282c6d9 (diff) | |
download | ydb-3c6da87778f43e0094756590180e63c18c492750.tar.gz |
vite: MVP (Result of research)
Обеспечена успешная сборка dummy для простого Реакт-приложения, созданного командой `pnpm create vite`
Реализована практически 100% копипастой реализации для webpack
-rw-r--r-- | build/conf/ts/ts.conf | 1 | ||||
-rw-r--r-- | build/conf/ts/ts_vite_bundle.conf | 59 |
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 { + } +} |