代码之家  ›  专栏  ›  技术社区  ›  Adeel Imran

为React库配置汇总

  •  0
  • Adeel Imran  · 技术社区  · 6 年前

    对不起,我没有寄到其他地方。

    这是我的汇总配置

    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 项目,但当我将它添加到代码沙盒项目中时

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

    它给了我一个错误

    不变冲突 只能在函数组件的主体内部调用挂钩。

    我似乎不知道这是代码沙盒问题(我对此表示怀疑)还是我的汇总配置问题。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ryan Cogswell    6 年前

    问题是,熔炉的“反应”和“反应DOM”被指定为 dependencies ,但应将其指定为 peerDependencies . 这是有拉反应两次效果不良。如果我完全移除沙盒中的react依赖项,它就会工作,因为react只被拉入一次(通过熔炉)。显然,这不是适当的解决方案,但它是一种快速验证错误原因的方法。