使用目标特定代码创建npm模块
我目前正在研究一个JavaScript模块,该模块包含针对Web和Node.js目标的代码。这些分别位于各自的文件中(index.node.js和index.web.js),我希望运行时/编译器根据当前正在使用的目标来选择所需的文件。因此,节点在“需要”模块时应自动选择index.node.js,而在为Web目标构建时,webpack应该自动获取index.web.js文件。
但是,仅依靠扩展来完成此操作是行不通的,因为它会抱怨缺少index.js。如何以Webpack真正只包含其中一个文件的方式来实现这一点(这样就没有运行时的开销),而实际上它在终端用户方面却毫不费力地工作。
回答如下:这就是字段browser
和main
可用于:
{
"browser": "index.web.js"
"main": "index.node.js"
}
Webpack使用浏览器字段作为默认字段。 Node使用主字段(据我所记得)。
[使用Webpack进行后端编译时(是的-这是一件事情-用户需要更改the target,并且可能需要更改how modules are resolved。