ts.conf 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. NODEJS_ROOT=$NODEJS_RESOURCE_GLOBAL
  2. NODEJS_BIN=$NODEJS_ROOT/node
  3. PNPM_ROOT=$PNPM_RESOURCE_GLOBAL
  4. PNPM_SCRIPT=$PNPM_ROOT/pnpm.js
  5. TSC_ROOT=$TS_COMPILER_RESOURCE_GLOBAL/typescript
  6. TSC_SCRIPT=$TSC_ROOT/lib/tsc.js
  7. NOTS_TOOL=${tool:"tools/nots"}
  8. NOTS_TOOL_BASE_ARGS=--build-root $ARCADIA_BUILD_ROOT --bindir $BINDIR --curdir $CURDIR --nodejs-bin $NODEJS_BIN
  9. NPM_CONTRIBS_PATH=devtools/dummy_arcadia/ts/contribs
  10. ### @usage: NPM_CONTRIBS() # internal
  11. ###
  12. ### Defines special module that provides contrib tarballs from internal npm registry.
  13. ### Should be used only with `NODE_MODULES` macro.
  14. ###
  15. ### @see [FROM_NPM_LOCKFILES()](#macro_FROM_NPM_LOCKFILES)
  16. ### @see [NODE_MODULES()](#macro_NODE_MODULES)
  17. module NPM_CONTRIBS: _BASE_UNIT {
  18. .CMD=TOUCH_UNIT
  19. .PEERDIR_POLICY=as_build_from
  20. .FINAL_TARGET=no
  21. .ALLOWED=FROM_NPM_LOCKFILES
  22. .RESTRICTED=PEERDIR
  23. SET(MODULE_TAG NPM_CONTRIBS)
  24. MODULE_SUFFIX=.fake
  25. _BARE_MODULE()
  26. }
  27. ### @usage: FROM_NPM_LOCKFILES(LOCKFILES...) # internal
  28. ###
  29. ### Defines lockfile list for `NPM_CONTRIBS` module.
  30. ###
  31. ### @see [NPM_CONTRIBS()](#module_NPM_CONTRIBS)
  32. macro FROM_NPM_LOCKFILES(LOCKFILES...) {
  33. SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS $LOCKFILES)
  34. # See implementation in build/plugins/nots.py
  35. _FROM_NPM_LOCKFILES($LOCKFILES)
  36. }
  37. ### @usage: FROM_NPM(NAME VERSION SKY_ID INTEGRITY INTEGRITY_ALGO TARBALL_PATH)
  38. macro FROM_NPM(NAME, VERSION, SKY_ID, INTEGRITY, INTEGRITY_ALGO, TARBALL_PATH) {
  39. .CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_npm.py"} ${input;hide:"build/scripts/fetch_from.py"} ${input;hide:"build/scripts/sky.py"} --name $NAME --version $VERSION --sky-id $SKY_ID --integrity $INTEGRITY --integrity-algorithm $INTEGRITY_ALGO --copy-to ${output:TARBALL_PATH} ${requirements;hide:"network:full"} ${kv;hide:"p NP"} ${kv;hide:"pc yellow"}
  40. }
  41. ### @usage: NODE_MODULES()
  42. ###
  43. ### Materializes `node_modules.tar` bundle according to the module's lockfile.
  44. ###
  45. ### @see [NPM_CONTRIBS()](#module_NPM_CONTRIBS)
  46. macro NODE_MODULES() {
  47. # See implementation in build/plugins/nots.py
  48. }
  49. _NODE_MODULES_INPUTS=
  50. macro _NODE_MODULES(IN{input}[], OUT{output}[]) {
  51. PEERDIR($NPM_CONTRIBS_PATH)
  52. SET(_NODE_MODULES_INPUTS \${input;hide:node_modules.tar})
  53. .CMD=${cwd:BINDIR} $NOTS_TOOL create-node-modules $NOTS_TOOL_BASE_ARGS --pnpm-script $PNPM_SCRIPT --contribs $NPM_CONTRIBS_PATH ${input;hide:IN} ${output;global;hide:OUT} ${kv;hide:"p NM"} ${kv;hide:"pc yellow"}
  54. }
  55. module _TS_BASE_UNIT: _BASE_UNIT {
  56. SET(MODULE_TAG TS)
  57. SET(PEERDIR_TAGS TS NPM_CONTRIBS)
  58. PEERDIR(build/platform/nodejs)
  59. PEERDIR(build/external_resources/pnpm)
  60. PEERDIR(build/external_resources/typescript)
  61. MODULE_SUFFIX=.fake
  62. _BARE_MODULE()
  63. }
  64. TS_CONFIG_PATH=tsconfig.json
  65. TS_COMPILE=${cwd:BINDIR} $NOTS_TOOL compile-ts $NOTS_TOOL_BASE_ARGS --tsc-script $TSC_SCRIPT --config ${input:TS_CONFIG_PATH} $_NODE_MODULES_INPUTS ${output;hide:"package.json"} ${kv;hide:"p FE"} ${kv;hide:"pc yellow"} && $TOUCH_UNIT
  66. ### @usage: TS_LIBRARY([name])
  67. ###
  68. ### The TypeScript/JavaScript library module, compiles TypeScript sources to JavaScript.
  69. ### Build results are JavaScript files, typings and source mappings (depending on local tsconfig.json settings).
  70. ###
  71. ### @see [NODE_MODULES()](#macro_NODE_MODULES)
  72. ### @example
  73. ###
  74. ### TS_LIBRARY()
  75. ### SRCS(src/index.ts)
  76. ### NODE_MODULES()
  77. ### END()
  78. ###
  79. module TS_LIBRARY : _TS_BASE_UNIT {
  80. .CMD=TS_COMPILE
  81. .FINAL_TARGET=yes
  82. .PEERDIR_POLICY=as_build_from
  83. SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS ${CURDIR}/${TS_CONFIG_PATH} ${CURDIR}/package.json)
  84. _TS_CONFIGURE($TS_CONFIG_PATH)
  85. }