首页 > 其他分享 >使用rollup打包一个npm包

使用rollup打包一个npm包

时间:2024-04-16 17:58:33浏览次数:28  
标签:npm babel rollup react 我们 打包

使用rollup打包一个npm包

前言:在这个都在使用 npm install,来安装包的时代,你是否想发布一个自己的npm包,或者你工作中是否要发布一个npm包,来到你的项目中到处使用呢?(不晓得npm是什么的请移步:npm)

那么今天我们就来学习一下怎样打包一个自己的npm包

1.首先准备环境

node本地环境,vscode编辑器

2.创建两个项目

项目说明:

my-react-npm是我们准备要打包的npm的文件夹

my-react-test是我们本地测试要是用的文件夹

首先我们使用cmdmy-react-npm文件夹下执行npm init -y

执行成功之后我们会看到一个package.json文件,下面我们来再此文件夹下,依次创建src和lib目录

src存在内容;lib存放打包之后的内容

在src下添加下面的文件

文件内容Button.js

import React from "react";

const Button = () => {
  return (
    <div>
      我是一个btn
    </div>
  )
}
export default Button;

index.js

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

现在我们需要安装我们需要的依赖了

当然你也可以一起安装 npm install @babel/core @babel/preset-env @babel/preset-react rollup @rollup/plugin-babel @rollup/plugin-commonjs @rollup/plugin-node-resolve -D

依赖请参阅npm上的具体内容说明,这里不具体说明。

然后我们在my-react-npm

下面创建rollup.config.js(注意这里有坑),后面会说

import { babel } from '@rollup/plugin-babel';
import commonjs from "@rollup/plugin-commonjs";
import resolve from '@rollup/plugin-node-resolve';
export default {
  input: './src/index.js',
  output: {
    file: './lib/bundle.js',
    format: 'es',
  },
  plugins: [
    resolve(),
    babel({
      exclude: 'node_modules/**', // 只编译我们的源代码
      presets: ['@babel/preset-env', '@babel/preset-react'],
    }),
    commonjs(),
  ],
  // 设置react为外部引用,可避免打包时打进去,否则警告(!) Unresolved dependencies
  external: ['react'],
};

上面是具体的配置内容

然后我们在package.json中添加如下配置:

"scripts": {
    "build": "rollup -c",
    "dev": "rollup -c -w"
}

一切都OK了,现在我们执行npm run build

然后你就上当了:

怎么解决这个问题呢?

两种方式:

第一种在package.json文件中添加type: "module"

第二种:直接把rollup.config.js改为rollup.config.mjs

记得去掉package.json中第一种加的配置。

我们看一下我们打包好的东西:

上面我们已经完成了我们要打包的npm包的过程,现在我们要测试这个包。

测试包

测试包我们就需要我们创建的另外一个文件夹了(my-react-test),在另外一个文件夹下cmd执行npx create-react-app my-react-app

创建出来一个react项目,在这个项目中我们引入我们刚才打包好的东西。

首先我们在my-react-npm 目录下执行npm link (注意这里有坑)

我们会看到添加了一个包。

然后我们在我们刚才创建好的项目下执行cmd:npm link my-react-npm

这样我们就link到我们本地的包了,在项目中引用这个包就行了。

启动项目引用之后,我们会发现报错了

找不到。还记得我们前面提到过的坑吗?

当然我们忘记修改打包之后的main指向了

看我们之前配置的是什么,这个当然找不到Button了,我们应该把这个地方修改为lib下面的

lib/bundle.js 修改完,我们就能在页面中看到我们引入的内容了。 后面怎么发包,大家就自己从网上找吧。很简单的    

标签:npm,babel,rollup,react,我们,打包
From: https://www.cnblogs.com/shangguancn/p/18138523

相关文章

  • electron npm install 报错解决方案
    问题解决方案ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/......
  • 17、BGP按组打包
    BGP按组打包目前现网路由表的快速增长,以及网络拓扑的复杂性导致BGP需要支持更多的邻居。特别是一些邻居数目多且路由量大的场景下,针对路由器需要给大量的BGP邻居发送路由,且大部分邻居具有相同出口策略的特点,要求较高的打包发包性能。按组打包技术将所有拥有共同出口策略的BGP......
  • npm link实操详细指南
    参考资料:https://www.cnblogs.com/zhangzl419/p/15210835.html1、什么时候使用npmlink?npmlink用来在本地项目和本地npm包之间建立连接,可以在本地进行模块测试。npm包在开发和迭代更新时,不适合直接发布到线上或者直接发布测试版本进行调试,会导致过程繁......
  • npm ERR! errno CERT_HAS_EXPIRED(淘宝镜像证书过期)
    淘宝镜像证书过期npmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIREDnpmERR!requesttohttps://registry.npm.taobao.org/echartsfailed,reason:certificatehasexpired SSL证书已过期导致npm命令失败的问题。通常是因为证书过期或不再受信任而引......
  • vscode使用npm安装依赖报错
    1.报错信息npmERR!codeEPERMnpmERR!syscallopennpmERR!pathC:\Node\node_cache_cacache\index-v5\4b\d5\ac02d8eac51f5c368b18a948d14b7ba882d43e6f4cafddbf9dda740d2afanpmERR!errno-4048npmERR!Error:EPERM:operationnotpermitted,open'C:......
  • 2024年4月14日-UE5-开场动画、火球冲力、打包游戏
    加一个开场动画打开开始地图新建一个关卡序列  打开后,新建相机 然后把过场动画的蓝图拖到屏幕里,选自动播放 -----------------------------------------------------------------------------------------------------------------现在给主角普通攻击火球加一个击......
  • 将网站打包成Windows应用程序
    #准备###安装node.jshttps://nodejs.cn/download/https://npmmirror.com/mirrors/node/v18.20.0/node-v18.20.0-x64.msi#安装Nativefier npminstallnativefier-g#创建应用程序nativefier"https://www.toutiao.com/"或者自定义一个客户端程序名:nativefier--n......
  • 04_把QT程序打包成Windows软件
    把QT程序打包成Windows软件问题一:什么是打包和部署?​因为我们要把写好的程序发给用户来用,我们写好的源码也不是随便给别人的。问题二:怎么打包和部署?1.我们把工厂切换到release模式,然后编译。​release模式:基本没有调试信息。​debug模式:有很多调试信息。......
  • npm,registry,镜像源,npm切换源,yarn,cnpm,taobao,nrs
    描述我们在使用node的npm下载依赖的时候,往往下载速度很慢,那是因为npm默认的是npm处于国外的官方镜像源。所以需要切换到国内的镜像源来加速依赖下载。所以本文推荐一款简单好用npm镜像源管理器,可以方便开发者管理自己的镜像源。推荐:npm-registry-nrs......
  • rollup开发一个npm插件/包
    创建一个项目创建一个空项目,并初始化npminit-y局部安装rollupyarnadd--devrollup并创建其配置文件rollup.config.jsexportdefault{ input:'src/main.ts', output:{ file:'bundle.js', format:'cjs' }};如果你的项目是源码是基于js写的,那么截止到目前,......