从babel排除测试文件

时间:2019-07-15 13:52:06

标签: node.js jestjs babeljs babel babel-jest

我有一个使用nodejs 11,babel 7和jest(babel-node和babel-jest)设置的项目。 我们将测试文件放在js文件旁边, 对于file.js,将有一个测试文件file.test.js。 问题是babel每次都会编译所有文件。 当测试文件不在测试上下文中编译时(在没有运行jest的情况下),babel尝试编译.test.js文件,并且由于jest特定的导入不存在而失败,例如jest.fn(),仅当运行jest,我无法导入此依赖项,因为其中的一些依赖项像jest-next一样在其他模块中流传下来。

我试图设置babel以忽略test.js文件,但是无论我做什么,babel都会尝试编译它们。

这是我的babel设置:


    module.exports = (api) => {
    api.cache(false);

    const presets = [
        [
            '@babel/preset-env', {
                targets: {
                    node: 'current'
                }
            }
        ]
    ];
    const plugins = [
        [ '@babel/plugin-proposal-decorators', { 'legacy': true } ],
        [ '@babel/plugin-proposal-class-properties', { loose: true } ],
        [ 'module-resolver', {
            'root': [ './src' ],
            'alias': {
                '@': './src',
                'Common': './src/Common'
            }
        } ]
    ];

    let test = [];
    let ignore = [];
    let exclude = [];


    if ([ 'dev', 'build' ].includes(process.env.BABEL_ENV)) {
        test.push(
            /^((?!(\\.test\\.))[\\s\\S])*\\.(js|ts)$/
        );
    } else if ([ 'test' ].includes(process.env.BABEL_ENV)) {
        plugins.push(
            '@babel/plugin-transform-runtime'
        );
        test.push('**/*.test.js');
    }

    return {
        presets,
        plugins,
        test,
        ignore,
        exclude
    };
};

有没有一种方法可以设置babel而不编译test.js文件,而仍然将它们放在源文件旁边?

0 个答案:

没有答案