在流星应用中更改导入文件后重新编译

时间:2018-08-20 18:59:24

标签: meteor babel

我正在创建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一起使用并做出反应。

我检查了通行证的支持,这似乎是流星问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

无法以这种方式实现它。 因此,我决定尝试导入覆盖文件并进一步导出它。而且,如果导入失败,则表示该文件不存在,因此默认文件将导出其默认内容:

...
let toExport;
try {
    import Overrides from "overriding_path";
    toExport = Overrides;
} catch (e) {
    toExport = OriginalExport;
}

export default toExport;

后来只是构建了一个插件,而不是修改导入会修改文件。