从下面源码看出,默认require解析的都是文件的真实路径。若果想保留符号连接路径,可以使用这2个命令设置。
—preserve-symlinks设置非主文件
—preserve-symlinks-main设置主文件,也就是运行的入口文件。如果入口文件是符号链接的,那么久可以使用该命令设置。

  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. }

参考

Node.js 模块系统源码探微