ancient-vegetable-10556
02/23/2023, 10:48 PMshell_command
and adhoc_tool
, which also allows version pinning for pre-installed binaries that themselves need runnable dependencies (e.g. yarn
depends on node
). Would appreciate some feedback on the API approach here:
https://github.com/pantsbuild/pants/pull/18347ancient-vegetable-10556
02/23/2023, 10:49 PMnode-modules
directory with version-pinned yarn and node:
# Dependencies and source files
files(
name="package-config",
sources=["package.json", "yarn.lock",],
dependencies=[],
)
# The source files themselves
files(
name="js-sources",
sources=["*.js",],
dependencies=[],
)
system_binary(
name="yarn",
binary_name="yarn",
fingerprint=r"1\.22\.19",
fingerprint_args=["--version"],
fingerprint_dependencies=[_runnable(name="node", address=":node")],
)
system_binary(
name="node",
binary_name="node",
fingerprint=r"v19.0.1",
fingerprint_args=["--version"],
)
# Fetch the dependencies and produce a `node_modules` directory
adhoc_tool(
name="node-modules-pinned",
runnable=":yarn",
args=["install", "--immutable"],
dependencies=[":package-config"],
execution_dependencies=[
":package-config", _runnable("node", ":node"),
],
output_directories=["node_modules"],
timeout=300,
)
curved-television-6568
02/24/2023, 2:37 AMancient-vegetable-10556
02/24/2023, 5:34 PMancient-vegetable-10556
02/24/2023, 5:35 PMancient-vegetable-10556
02/24/2023, 7:54 PMadhoc_tool
saga has been an exercise in “if you can’t make things easy, at least make it possible”ancient-vegetable-10556
02/24/2023, 7:54 PM