您现在的位置是:首页 >学无止境 >react组件发布到npm网站首页学无止境

react组件发布到npm

daoke_li 2024-06-14 17:17:43
简介react组件发布到npm

创建库

新建文件夹 test-react-library

进入项目,初始化:

yarn init -y

此处 -y 就是yes,相当于执行了一路回车

安装依赖包,其中rollup用3以上版本会报错,还没研究处理方法。

yarn add rollup@^2.0.0 rollup-plugin-babel @babel/core @babel/preset-env @babel/preset-react -D

分别新建目录和文件,斜杠开头说明在根目录下:

位置:/src/components/button/index.js。组件

添加内容:

import React from 'react' 
const Button = (props) => { 
    return <button>{props.children || '自定义按钮'}</button> 
} 
export default Button

位置: /src/index.js。打包入口

添加内容:

import Button from './components/button/index' 
export { Button }

位置: /.babelrc 。如果不配置,则无法识别 jsx 语法

添加内容:

{
    "presets": [
        "@babel/preset-env",
        "@babel/preset-react"
    ]
}

不识别jsx会报错:Unterminated regular expression. 无法识别JSX指令

位置: /rollup.config.js。打包的配置

内容为:

import babel from 'rollup-plugin-babel'
export default{
    input:'./src/index.js',
    output:{
        file:'./lib/bundle.js',
        format:'cjs'    
    },
    plugins:[babel()],
    // 设置react为外部引用,可避免打包时打进去,否则警告(!) Unresolved dependencies
    external:['react']
}

rollup中文文档:Tutorial | rollup.js 中文文档 | rollup.js中文网 (rollupjs.com)

下面进行git和yarn的忽略配置

位置: /.gitignore

添加内容:

node_modules
# 开发工具的设置等等

位置: /.yarnignore

添加内容:

src
.gitignore

打包

执行命令

yarn run rollup -c // -c是--config,即使用配置文件打包

在/lib/bundle.js就可以看到打包后的输出文件

在package.json中添加如下代码,可以简化执行指令

  "scripts": {
    "注释": "下面的-c是使用配置文件,-w是watch,监视文件变化而打包",
    "build": "yarn run rollup -c",
    "dev": "yarn run rollup -c -w"
  }

测试

在上面的库项目里使用yarn注册链接:

yarn link

修改package.json中内容,作为外部引用入口

"main": "lib/bundle.js",

用脚手架新建react项目

yarn create react-app test-react-project

安装完依赖后,导入lib库

yarn link test-react-library

在项目中import Button组件并使用

import {Button} from '@daoke0818/test-react-library'
function App() {
  
  return (
    <div className="App">
        <Button/>
        <Button>给你起个名字</Button>
    </div>
  );
}

export default App;

组件已经可以正常使用了

发布到npm

在测试项目下解除本地软连接

yarn unlink test-react-library

这时页面因找不到包而报错
切换到自定义库项目里,进行发版

npm publish --access public

发版具体问题请见最简npm发包步骤
成功后就可以在npm官网搜到包名
回到测试项目中,停止服务器,安装这个包(注意包名如果重复需要修改才能发上去,安装时别忘了新包名)

yarn add test-react-library

重新启动,可以看到页面已正常加载,此时引用的包就来自于npm服务器了。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。