La estructura de mi carpeta es la siguiente:
/dev node_modules /lib node_modules rollup.config.jsy este es mi rollup.config.js
import babel from '@rollup/plugin-babel' import image from '@rollup/plugin-image' import json from '@rollup/plugin-json' import commonjs from 'rollup-plugin-commonjs' import { nodeResolve } from '@rollup/plugin-node-resolve' import replace from '@rollup/plugin-replace' import sourcemaps from 'rollup-plugin-sourcemaps' import postcss from 'rollup-plugin-postcss' import peerDepsExternal from 'rollup-plugin-peer-deps-external' import del from 'rollup-plugin-delete' export default { input: 'src/index.jsx', output: { dir: `dist`, format: 'es', exports: 'auto', sourcemap: true, }, // inlineDynamicImports: true, //creates single output file but then there is no intellisense plugins: [ del({ targets: 'dist/*' }), // replace({ // 'process.env.NODE_ENV': JSON.stringify('development'), // }), peerDepsExternal(), nodeResolve({ // modulesOnly: true, // crashes everything extensions: ['.js', '.jsx'], }), postcss({ config: { path: './postcss.config.js', }, extensions: ['.css', '.scss'], minimize: true, use: [ [ 'sass', { includePaths: ['./src/scss', './node_modules'], }, ], ], }), json(), image(), babel({ exclude: 'node_modules/**', plugins: ['@babel/transform-runtime'], babelHelpers: 'runtime', }), commonjs({ include: 'node_modules/**', }), sourcemaps(), ], } Compilé el código con rollup -c Cuando los node_modules en /dev están instalados, recibo este error cuando quiero compilar el código: Error: 'default' is not exported by ../node_modules/prop-types/index.js, imported by ../node_modules/react-redux/es/components/Provider.js Cuando elimino la carpeta /dev/node_modules y la vuelvo a compilar, todo funciona bien. ¿Cómo puedo evitar que el resumen busque en la carpeta principal node_modules?
¿Intentaste eliminar la inclusión en commonJs?
commonjs(), sourcemaps(),El problema no es el resumen en sí, sino el complemento @rollup/plugin-node-resolve. El complemento intenta resolver los módulos usando el algoritmo de resolución de nodos, para usar módulos de terceros y ese algoritmo itera a través de los directorios principales, agregando a cada uno "/ node_modules" en busca de una resolución. https://nodejs.org/api/modules.html#modules_all_together Entonces, el problema radica en tener un monorepo y usar este complemento. No parece posible detener el comportamiento de este complemento, sin embargo, puede evitar que atraviese carpetas de módulos específicas.
nodeResolve({ resolveOnly: [/^(?!react$|react-dom$).*/] }),Según los documentos: https://github.com/rollup/rollup-plugin-node-resolve Al usar la opción resolveOnly, puede pasar expresiones regulares para bloquear la resolución de módulos específicos, o pasar una matriz de cadenas que especifican el único módulos que desea que atraviese. El ejemplo anterior no atraviesa los módulos reaccionar o reaccionar-dom en la carpeta principal.