我正在创建babel插件以根据文件存在的某些条件来管理导入路径。在初始构建中,一切正常,但是当我添加或删除可能影响条件结果的文件时,编译器不会重新编译正在导入更改文件的文件,因此条件仍然可以解决,就好像存在引用文件一样,但是编译器无法找到它。
我认为这是由于缓存。那么如何管理/清除缓存?当然,我想保留尽可能多的缓存。因此,也许有办法从缓存中仅删除受我的插件影响的文件吗?
插件的基本逻辑如下:
const fs = require("fs");
const fs_path = require("path");
function shouldResoulveImport(node) {
/* some checks, returns bool */
}
module.exports = function(babel) {
return {
visitor: {
ImportDeclaration(path, state) {
if (!shouldResoulveImport(path.node)) {
return;
}
const existing_file = /* some checking for another file existence */;
if (existing_file) {
path.node.source.value = existing_file;
}
}
}
};
};
我想要实现的目的是使用一些默认文件进行导入,但是当存在其他特定目录中的相同文件时,请更改其他文件的导入。
我将流星1.7与babel 7 beta一起使用并做出反应。
我检查了通行证的支持,这似乎是流星问题。
谢谢。
答案 0 :(得分:0)
无法以这种方式实现它。 因此,我决定尝试导入覆盖文件并进一步导出它。而且,如果导入失败,则表示该文件不存在,因此默认文件将导出其默认内容:
...
let toExport;
try {
import Overrides from "overriding_path";
toExport = Overrides;
} catch (e) {
toExport = OriginalExport;
}
export default toExport;
后来只是构建了一个插件,而不是修改导入会修改文件。