¿Puede el paquete web generar archivos de módulos y secuencias de comandos separados para el navegador y el nodo?

Estoy usando el paquete web para crear un objeto JavaScript que puede ser cargado por el navegador (en una etiqueta de script) pero también quiero que el paquete web haga un módulo que pueda ser cargado por nodo (que necesita module.exports = ).

¿Hay una manera de obtener webpack para hacer dos archivos; por ejemplo, un project.js y project.node.js ? ¿O voy por esto de la manera incorrecta?

La biblioteca de JavaScript D3 parece estar haciendo algo como esto basado en su package.json

 { "main": "build/d3.node.js", "browser": "build/d3.js", ... } 

Encontré cómo hacer que el paquete web haga varios archivos aquí , básicamente, solo exporta una matriz de objetos en lugar de solo uno en el webpack.config.js .

A continuación se encuentra el webpack.config.js donde estoy creando varios archivos con el mismo punto de entrada main.js

 module.exports = [ { entry: './src/main.js', output: { path: __dirname, filename: 'my_project.js', libraryTarget: 'var', library: 'my_project' }, ... }, { entry: './src/main.js', output: { path: __dirname, filename: 'my_project.node.js', libraryTarget: 'commonjs2', library: 'my_project' } ... ]; 

Estoy creando dos archivos: 1) my_project.js con my_project.js configurado en var para que el navegador pueda cargarlo con una etiqueta de script y 2) my_project.node.js con my_project.node.js configurado en commonjs2 para que el nodo pueda cargarlo.

Puse my_project.node.js debajo de main en package.json para que el package.json web lo cargara, vea a continuación:

 { "name": "my_project", "version": "1.0.0", "description": "something ...", "main": "my_project.node.js", ... }