—preserve-symlinks/—preserve-symlinks-main

nodejs在解释文件路径时,遇到符号链接时,默认会解释成真实链接来处理,如果想保留符号链接,可以使用该选项。—preserve-symlinks-main只负责控制解释主模块的行为,—preserve-symlinks只负责导入模块的行为,两者没有交集。
https://nodejs.org/api/cli.html#cli_preserve_symlinks

  1. if (rc === 0) { // stat 状态返回 0,则为文件
  2. // File.
  3. if (!isMain) {
  4. if (preserveSymlinks) {
  5. // 当解析和缓存模块时,命令模块加载器保持符号连接。
  6. filename = path.resolve(basePath);
  7. } else {
  8. // 不保持符号链接
  9. filename = toRealPath(basePath);
  10. }
  11. } else if (preserveSymlinksMain) {
  12. filename = path.resolve(basePath);
  13. } else {
  14. filename = toRealPath(basePath);
  15. }
  16. }

主模块or导入模块?
主模块是指直接执行的模块,入口模块,也就是 process.argv[1]
导入模块就是被主模块直接或间接调用的模块
https://stackoverflow.com/questions/45136831/node-js-require-main-module
[

](https://nodejs.org/api/cli.html#cli_preserve_symlinks)