【问题标题】:exporting a react component as npm package将 React 组件导出为 npm 包
【发布时间】:2018-09-10 16:20:09
【问题描述】:

说我想在npm包中分享一个简单的react组件,让别人使用,我必须这样做吗?

import SomeComponent from './components/SomeComponent';

module.exports = {
  SomeComponent: SomeComponent
}

参考 https://github.com/alanbsmith/npm-example-module/blob/master/lib/index.js

在项目的package.json中可以看到包的主文件是build/index.js,但是为什么作者不直接导出components/SomeComponent,而是创建了一个wrapper呢?我知道他使用 babel,这是为了支持旧版浏览器的代码,但为什么在这种情况下使用 module.exports?

【问题讨论】:

    标签: reactjs npm ecmascript-6


    【解决方案1】:

    如果您使用的是 es6 导入,您也应该使用 es6 导出以保持一致性。

    import SomeComponent from './components/SomeComponent'
    export { SomeComponent }
    

    并在您的package.json 中将main 字段设置为构建后的文件。比如

    {
       "main": "lib/index.js"
    }
    

    然后人们可以像这样导入它:

    import { SomeComponent } from 'my-lib'
    

    不过,您所遵循的示例看起来确实已经过时,并且没有遵循很多好的做法。 Here's a more modern-looking solution that you'll probably have less trouble with.

    【讨论】:

    • 如果你跳过这个怎么办?将components/Somecomponent 放入index.js,然后进行正常的类导出。别人不就可以import SomeComponent from 'some-component'吗?
    • 当然,您也可以这样做。我在想你的库中是否有多个组件,类似于诸如 material-ui 或 semantic-ui 之类的流行组件。重点是,如果您使用 ES 模块,请避免使用 CommonJS 语法以保持一致性。
    • 我也这样做了,但遇到了问题。任何线索为什么我的库不起作用?见 src/index.js 第 3 行 github.com/thian4/webpack-problem
    • 不太确定;构建可能以某种方式损坏。我已经编辑了我的答案,并附上了一个可能更有帮助的替代示例的链接
    猜你喜欢
    • 2020-01-04
    • 2018-02-20
    • 2021-03-04
    • 2020-03-16
    • 2021-03-17
    • 2019-09-09
    • 2017-05-02
    • 2018-10-12
    • 1970-01-01
    相关资源
    最近更新 更多