Javascript 从src/或lib导入文件/

Javascript 从src/或lib导入文件/,javascript,webpack,es6-modules,commonjs,Javascript,Webpack,Es6 Modules,Commonjs,我有一个导入组件(组件)的包(我们称之为预设)。两者都是由我维持的。为了向后兼容,预设还必须从组件导入特定功能,该功能只能从特定文件(而不是主字段中的文件)中使用。为此,我使用require('component/lib/file.js')语法 然而,file.js有副作用。这通常很好,但对于Webpack构建,我也有lib mjs(使用ES模块语法进行树抖动)。这会导致两次加载file.js,一次通过组件间接加载到lib mjs,一次直接加载到lib 有几个选择: 我可以将file.js从l

我有一个导入组件(
组件
)的包(我们称之为
预设
)。两者都是由我维持的。为了向后兼容,
预设
还必须从
组件
导入特定功能,该功能只能从特定文件(而不是
字段中的文件)中使用。为此,我使用
require('component/lib/file.js')
语法

然而,
file.js
有副作用。这通常很好,但对于Webpack构建,我也有
lib mjs
(使用ES模块语法进行树抖动)。这会导致两次加载
file.js
,一次通过
组件间接加载到
lib mjs
,一次直接加载到
lib

有几个选择:

  • 我可以将
    file.js
    lib
    /
    lib mjs
    中移出。然而,这会使构建过程复杂化,并扰乱回购结构
  • 我可以导出特定的函数。然而,由于
    component
    遵循相同的模式,有许多不同的组件,因此我不得不在很多地方改变这种模式
  • 我可以消除一些init函数的副作用。然而,这将是一个突破性的变化,涉及相当多的工作
  • 我可以确保副作用只有在尚未发生的情况下才会发生。但是,该更改和之前的更改仍然会加载两次文件。最重要的是,它需要一些半全局状态,我认为我不能为这一个完成duck输入
是否有像
require(require.resolve('component')+'/file.js')
这样的选项可以同时适用于节点和网页包