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')
这样的选项可以同时适用于节点和网页包