我在一个项目中有许多不同的模块,每个模块都有自己的文件夹,在每个模块中,有3个文件:
- index.js
- index.test.js
- data.js
每个模块都有这些文件,文件名相同,内容不同。
对于index.test.js文件,所有模块中所有index.test.js文件的import语句都是相同的,如下所示:
const runAnalysis = require('./index');
const { data } = require('./data');
const { formatData } = require('utils');
const formattedData = formatData(data);
由于这些import语句对于所有index.test.js文件都是相同的,是否有一种方法可以将这些语句合并到一行中,因此它不必在每个模块中重复一遍又一遍?
是否有办法把这些导入语句在头文件,然后每个index.test.js可以导入头文件?
不确定这是否有效或推荐,但它有效。
创建一个util js文件,它可以存在于项目根目录中,让我们用以下代码将其命名为import-util.js。
const { formatData } = require('utils');
const getMyImports = (dirname) => {
const runAnalysis = require(`${dirname}/index`);
const { data } = require(`${dirname}/data`);
const formattedData = formatData(data);
return {
runAnalysis,
formattedData
}
};
exports.getMyImports = getMyImports;
那么这个文件可以像这样使用来获得runAnalysis
和formattedData
const { runAnalysis, formattedData } = require('../import-util').getMyImports(__dirname);
__dirname
是使它工作的技巧,它提供了index.js和data.js要导入的目录路径。
这一行现在可以在每个模块文件夹中使用,给定文件夹包含index.js和data.js,它的工作原理与以下4行代码相同。
const runAnalysis = require('./index');
const { data } = require('./data');
const { formatData } = require('utils');
const formattedData = formatData(data);