https://guix.gnu.org/manual/en/html_node/Invoking-guix-shell.html
https://guix.gnu.org/manual/en/html_node/Writing-Manifests.html
Although you'll probably need to use npm, and for that you'll need to simulate fhs.
I think nix is better in this scenario. It's got a newer node (21 vs 18), better package support, and I've seen some solutions to automatically convert npm packages to nix ones.
Docker is going the be the easiest solution though.