# makeAbsoluteExternalsRelative
类型: | boolean| "ifRelativeSource" |
---|---|
CLI: | --makeAbsoluteExternalsRelative/--no-makeAbsoluteExternalsRelative |
默认: | "ifRelativeSource" |
该选项决定外部依赖的绝对路径是否应该在输出中转换为相对路径。本选项不仅适用于源文件中的绝对路径,也适用于由插件或 Rollup 核心解析出的绝对路径。
值为 true 时,像 import "/Users/Rollup/project/relative.js" 这样的外部引入将被转换为相对路径。当把绝对路径转换为相对路径时,Rollup 不考虑 file 或 dir 选项,因为这些选项可能不存在,比如在使用 JavaScript API 的构建中。相反,它假设输出 bundle 的根目录位于 bundle 中包含的所有模块的同一父目录。比如说所有模块的公共父目录是 "/Users/Rollup/project",上面的引入可能会在输出中被转换为 import "./relative.js"。如果输出 chunk 本身是嵌套在一个子目录中,通过设置例如 chunkFileNames: "chunks/[name].js",那么引入将会转换为 "../relative.js"。
如上所述,这也适用于最初的相对引入,如 import "./relative.js",在被 external 选项标记为外部依赖之前会被解析为绝对路径。
一个常见的问题是,这种机制也会适用于像 import "/absolute.js'" 这样的引入,导致输出中出现意外的相对路径。
对于这种情况,设置为 "ifRelativeSource" 可以检查原始引入是否是相对引入,然后在输出时才将其转换为相对引入。设置为 false 将在输出时保持所有路径为绝对路径。
请注意,当一个相对路径使用 external 选项直接标记为 "外部依赖" 时,那么它在输出时会是相同的相对路径。当它通过插件或 Rollup 核心解析,然后标记为外部依赖后,上述逻辑将适用。