为React库配置汇总

时间:2019-02-03 11:40:52

标签: reactjs rollupjs react-hooks codesandbox

对不起,我没有在其他地方发布此帖子。

这是我的汇总配置

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import { terser } from 'rollup-plugin-terser';
import pkg from './package.json';

export default {
  input: 'src/index.js',
  external: ['react', 'react-dom', 'prop-types'],
  output: [
    { file: pkg.main, format: 'cjs', exports: 'named' },
    { file: pkg.module, format: 'es', exports: 'named' },
  ],
  plugins: [
    resolve(),
    commonjs({
      include: 'node_modules/**',
    }),
    babel({
      exclude: 'node_modules/**',
    }),
    terser(),
  ],
};

这是我的项目https://github.com/withvoid/melting-pot的全部源代码

它发布在npmjs上 https://www.npmjs.com/package/@withvoid/melting-pot

我的问题是,如果我将库添加到https://github.com/facebook/create-react-app项目中,但是将其添加到codeandbox项目中,则我的库会很好

https://codesandbox.io/s/6lqzp7q28w

这给我一个错误

  

不变违反   挂钩只能在功能组件的主体内部调用。

我似乎无法弄清楚这是Codesandbox问题(我对此表示怀疑)还是汇总配置问题。

1 个答案:

答案 0 :(得分:1)

问题在于,熔炉的“反应”和“反应区域”指定为dependencies,但应将其指定为peerDependencies。这具有将React拖入两次但效果不佳的效果。如果我从沙盒中完全删除react依赖项,它就可以工作了,因为那时React仅被引入了一次(通过熔炉)。显然,这不是适当的解决方案,但这是一种验证错误原因的快速方法。