aboutsummaryrefslogtreecommitdiffstats
path: root/build/conf/ts/node_modules.conf
blob: 719aceb578e4ee8a0185411117c59d8628535ce3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
PNPM_ROOT=
PNPM_SCRIPT=$PNPM_ROOT/node_modules/pnpm/dist/pnpm.cjs

NPM_ROOT=
NPM_SCRIPT=$NPM_ROOT/node_modules/npm/bin/npm-cli.js

PM_SCRIPT=
PM_TYPE=

# combined input/outputs records as list of directives ${input;hide:<path>} ${output;hide:<path>}, used in builders
_NODE_MODULES_INOUTS=
_YATOOL_PREBUILDER_ARG=

macro _TS_ADD_NODE_MODULES_FOR_BUILDER() {
    # Calculate inputs and outputs of node_modules, fill `_NODE_MODULES_INOUTS` variable
    _NODE_MODULES_CONFIGURE()
}

_TARBALLS_STORE=__tarballs__
_PREPARE_DEPS_INOUTS=
_PREPARE_DEPS_RESOURCES=
_PREPARE_DEPS_USE_RESOURCES_FLAG=
_PREPARE_DEPS_CMD=$TOUCH_UNIT \
    && $NOTS_TOOL $NOTS_TOOL_BASE_ARGS prepare-deps \
    --tarballs-store $_TARBALLS_STORE \
    $_PREPARE_DEPS_INOUTS \
    $_PREPARE_DEPS_RESOURCES \
    $_PREPARE_DEPS_USE_RESOURCES_FLAG \
    ${hide;kv:"pc magenta"} ${hide;kv:"p TS_DEP"}

# In case of no deps we need to create empty outputs for graph connectivity
_PREPARE_NO_DEPS_CMD=$TOUCH_UNIT \
    && $YMAKE_PYTHON ${input:"build/scripts/touch.py"} \
    $_PREPARE_DEPS_INOUTS \
    ${hide;kv:"pc magenta"} ${hide;kv:"p TS_NODEP"}

module _PREPARE_DEPS_BASE: _BARE_UNIT {
    .CMD=_PREPARE_DEPS_CMD
    .IGNORED=SRCS FILES TS_FILES COPY_FILE
    # Propagates peers to related modules
    .PEERDIR_POLICY=as_build_from
    .NODE_TYPE=Bundle
    .INCLUDE_TAG=no

    # we have several modules in the same dir (.PEERDIRSELF=TS_PREPARE_DEPS in BUILD)
    # we need different names for module identity file
    # .fake tells builder to not materialize it in results
    SET(MODULE_SUFFIX .prepare_deps.fake)
    # .NODE_TYPE=Bundle is required for peers propagation, but it also affects
    # how merging of pic/nopic graphs. Here we can override this merging behaviour
    SET(MODULE_TYPE LIBRARY)
    # define own tag
    SET(MODULE_TAG TS_PREPARE_DEPS)
    SET(MODULE_LANG TS)
    # what modules it can PEERDIR to
    SET(PEERDIR_TAGS TS_PREPARE_DEPS)
    # do not include it into "results" of graph
    DISABLE(START_TARGET)

    # we read pnpm-lock.yaml and package.json during configuration
    SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS ${CURDIR}/pnpm-lock.yaml ${CURDIR}/package-lock.json ${CURDIR}/package.json)

    _SET_PACKAGE_MANAGER()
    _PREPARE_DEPS_CONFIGURE()
}