A Node script in a PHP repository, and where it lives

A build script written in JavaScript because it processes the asset manifest, in a repository where everything else is PHP.

the arrangement that stopped the arguments:

  bin/            executable entry points, any language,
                  with a shebang and a --help
  tools/          the implementation, one directory per
                  tool, with its own package.json or
                  composer.json
  Makefile        the only thing anybody needs to know

$ make assets     → tools/asset-manifest, node
$ make analyse    → vendor/bin/phpstan, php
$ make db-reset   → bin/db-reset, bash

The Makefile is the interface and the language is an implementation detail, which is what makes a mixed-language repository navigable — nobody needs to know that one target shells out to Node. The rule that keeps it from sprawling is that a tool in a second language needs a reason beyond preference, and processing a JavaScript build artefact is one.