捆绑一堆 require 语句同时避免命名空间

Bundling a bunch of require statements while avoiding namespacing

我有一个测试套件,在每个测试文件中我发现自己通常会导入一堆模块

const chai = require('chai')
const sinon = require('sinon')
const expect = chai.expect
const should = chai.should()
const testData = require('../test/test-data')

有没有什么方法可以将所有这些 require 调用捆绑在一个 require 中而不 使用命名空间?

例如:

require('../test/test-bundle')

console.log(chai) // ok
console.log(sinon) // ok
console.log(expect) // ok
console.log(should) // ok
console.log(testData) // ok

我不能说我的解决方案很好,但它会让你减少重复代码的数量。 您可以定义一个新模块 (test-util.js) 并在那里要求所有需要的模块。之后,在每次测试中,只需要一个模块,并使用解构赋值语法来避免命名空间。

The destructuring assignment syntax is a JavaScript expression that makes it possible to unpack values from arrays, or properties from objects, into distinct variables.

测试-util.js:

module.exports = {
  chai: require('chai'),
  sinon: require('sinon'),
  expect: require('chai').expect,
  should: require('chai').should(),
  testData: require('../test/test-data')
};

test.js

let { chai, sinon, expect, should, testData } = require('./test-util.js');