dist节点文件夹始终可用于节点模块

时间:2017-03-21 11:35:43

标签: javascript webpack ecmascript-6

我正在构建一个自己的工具来反编译并将相关的js文件(用ES6编写)打包成一个包。到目前为止,它与预期的本地文件一样,但当我来到公共模块,例如,react和redux等,它是不同的。我想知道如何将这些模块包含在捆绑中?我发现大多数公共模块中都存在dist文件夹,其中包含分布式版本。因此,dist文件夹是否始终可用于任何模块目录?

1 个答案:

答案 0 :(得分:2)

Webpack使用与Node.js相同的模块分辨率。 node_modules有一个package.json,其中包含main字段,用于确定在代码中导入模块时要导入的文件。此外,webpack会在browser中查找modulepackage.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时,它默认使用distumd(如主页底部所述)