根据节点变量进行反应导入

时间:2018-03-23 03:37:38

标签: node.js reactjs bundling-and-minification

我想弄清楚这个还没找到任何有用的东西。

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

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

现在取决于USER变量我需要做的导入就像 import `~/users/${process.env.USER}/config.json`;

这显然不起作用,我对如何使其工作感到困惑。当然有一种方法可以在节点变量上进行导入,然后根据该变量从不同的文件夹和文件导入。任何帮助或链接将不胜感激!

1 个答案:

答案 0 :(得分:0)

因此,需要基于节点变量的解决方法是使用FuseBox Sparky task runner和文件Api在App.tsx文件夹中编辑/替换并包含相应的样式表。

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

现在暂时打开问题并希望提供更清晰的解决方案,否则我会发布更多信息并在完成此任务后关闭它:)

修改(更多信息)

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

  1. inject-css使用Sparkys文件api将//css替换为相关的import语句
  2. remove-css任务,一旦完成,就会用//css替换import语句。
  3. 所以第一个是以下内容:

    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 import语句。

    // 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任务问题时会更新。