—preserve-symlinks/—preserve-symlinks-main
nodejs在解释文件路径时,遇到符号链接时,默认会解释成真实链接来处理,如果想保留符号链接,可以使用该选项。—preserve-symlinks-main只负责控制解释主模块的行为,—preserve-symlinks只负责导入模块的行为,两者没有交集。
https://nodejs.org/api/cli.html#cli_preserve_symlinks
if (rc === 0) { // stat 状态返回 0,则为文件
// File.
if (!isMain) {
if (preserveSymlinks) {
// 当解析和缓存模块时,命令模块加载器保持符号连接。
filename = path.resolve(basePath);
} else {
// 不保持符号链接
filename = toRealPath(basePath);
}
} else if (preserveSymlinksMain) {
filename = path.resolve(basePath);
} else {
filename = toRealPath(basePath);
}
}
主模块or导入模块?
主模块是指直接执行的模块,入口模块,也就是 process.argv[1]
导入模块就是被主模块直接或间接调用的模块
https://stackoverflow.com/questions/45136831/node-js-require-main-module
[