We use package.lock and docker image with local folder binding to run legacy node projects. Eg. docker run -v local:inner node:12 command