我正在构建一个自己的工具来反编译并将相关的js文件(用ES6编写)打包成一个包。到目前为止,它与预期的本地文件一样,但当我来到公共模块,例如,react和redux等,它是不同的。我想知道如何将这些模块包含在捆绑中?我发现大多数公共模块中都存在dist文件夹,其中包含分布式版本。因此,dist文件夹是否始终可用于任何模块目录?
答案 0 :(得分:2)
Webpack使用与Node.js相同的模块分辨率。 node_modules
有一个package.json
,其中包含main
字段,用于确定在代码中导入模块时要导入的文件。此外,webpack会在browser
中查找module
或package.json
字段,如果存在则优先于main
。这样可以轻松发布与常规Node.js构建不同的构建(例如,使用ES模块(import
/ export
),但Node.js不支持这些构建,但是捆绑包如webpack)。可以使用选项resolve.mainFields配置此行为。有关示例,请查看package.json
of Redux。
这些字段都不是强制性的,但至少应该存在main
,因此您只需导入一个模块:
import module from 'module';
或require
:
const module = require('module');
Webpack会自动包含您导入到软件包中的模块。
dist
目录没有任何特殊之处,但拥有一个包含UMD版本的dist
目录是很常见的。特别是当Unpkg允许您导入节点模块而无需将其手动发布到CDN时,它默认使用dist
或umd
(如主页底部所述)