js 真是一个有意思的东西。node_modules 到处可见,而且目录还特别在,然后 node 12\14\16\18,现在都快20了。
于是就会出现一个情况,磁盘里有 N 个 JS 项目,各自基于不同的 node 版本。当然 node 有 n / nvm 等相应的工具。直接运行就可以切换相应的版本。但如果你想同时开发两个不同版本的项目,就有点麻烦了。这边目录先 n 18,然后 npm run ,再回到另一个目录 n 16 && npm run 。看起来没问题,各自都能跑。
可是如果现在 n18的项目需要杀进程重启。那就得再运行 n18,恢复成18,然后再 run .....
不是说其他语言没有这种情况,比如 PHP,其实也有很多版本,还有 Python。但 PHP 可以通过安装不同的 php 版本,再使用 nginx 进行反代就完事了。python 也有 virtualenv。而 JS 居然没有。
搜了下网络,突然发现了 nodeenv。居然是利用 virtualenv 的方法来维护多版本。nodeenv 的安装我就不细说了:pip install nodeenv 就行了。
在相应的目录下,运行一下:nodeenv --node=16.xx.x --with-npm {dir}。这样一个简单的方法就在 dir 目录下生成了一个环境版本。然后运行 . ./dir/env/active ,会发现命令行前面多了个括号(env) <---根据目录名来。
在这个目录下面,直接运行 node -v,你会发现这个目录下的 node 就是你刚才指定安装的版本。也因为是--with-npm,所以 npm run 就直接可用了。
一切就是这样的自然。
当然也不是没有缺点,比如,这个 env的目录会很大,毕竟一个 node / npm,都在里面。但,至少可以解决问题了