组合两个js文件时如何消除嵌套要求

How can I eliminate nested require when combining two js files

我正在尝试合并 javascript 文件,我尝试了 uglifyjs 并且它有效,但我想消除对同一 npm 库的重复要求。 用例: 我有 file1.js 和 file2.js。这两个文件都使用例如请求 npm 模块,当我将这两个文件合并为一个文件时,它复制了 require('request')。有什么办法可以解决这个问题吗?

谢谢。

一种方法是将模块作为参数传递给另一个文件。 例如:

file1.js

var request = require('request');
var file2 = require('./file2')(request);

module.exports = {...};

file2.js

module.exports = function(request) {

  // use "request" parameter, instead of requiring.   

  return {...};

};

更新:

import * as file2 from './file2';

const file2Module = file2(request);