基于节点变量的反应导入

React import based on node variable

我正在尝试解决这个问题,但还没有发现任何有用的东西。

想法是在某些组件或文件中我需要根据节点变量导入特定文件。

一些示例脚本 运行 包括: USER=test yarn run build //or USER=test yarn run serve

现在,根据 USER 变量,我需要进行导入,例如 import `~/users/${process.env.USER}/config.json`;

这显然不起作用,我对如何让它起作用感到困惑。当然有一种方法可以基于节点变量导入,然后基于该变量从不同的文件夹和文件导入。任何帮助或链接将不胜感激!

因此,需要基于节点变量的解决方法是使用 FuseBox Sparky task runner 和文件 Api 到 edit/replace 文件夹中的 App.tsx 并包括适当的样式表。

仍然需要编写一个任务来在构建或开发服务器关闭后撤消编辑。

暂时保留问题,希望给出更清晰的解决方案,否则我将 post 更多信息并在完成此任务后关闭它 :)

编辑(更多信息)

因此创造了两个闪亮的工作

  1. inject-css 使用 Sparkys 文件 api 将 //css 替换为相关的导入语句
  2. remove-css 任务,完成后用 //css 替换导入语句。

所以第一个是下面的:

Sparky.task('inject-css', async (context: SparkyContext) =>
{
    await Sparky
        .src('./src/~/App.tsx')
        .file('*',  (file: SparkyFile) =>
        {
            file.read();
            file.setContent(
                `${file.contents}`.replace(
                    '//css',
                    `import '~/user${context.user}/styles/site.scss';`
                )
            );
            file.save();
        })
        .exec();
}); 

第二个作业是相同的,但替换参数几乎相反,它在进程退出时调用。这部分仍然存在一些问题,但想法是一旦通过调用 process.exit() 或 ctrl+c(在 Mac 上)关闭进程,然后我们删除 css 导入语句。

// ctrl + c event
process.on('SIGINT', () => {
    Sparky.exec('remove-css');
});

// process.exit called
process.on('exit', () => {
    Sparky.exec('remove-css');
});

// uncaught exception
process.on('uncaughtException', () => {
    Sparky.exec('remove-css');
});

当我弄清楚为什么我的构建与 remove-css 任务有问题时会更新。