389 字
2 分钟
vite构建库并发布
2022-01-17
无标签

添加入口文件 src/lib/index.ts#

export { default as Button } from './Button.vue'
export { default as Switch } from './Switch.vue'
// 相当于
// import Switch from './Switch.vue'
// export { Switch }

修改vite.config.js#

参考链接: vite构建库 构件库配置项

build: {
lib: {
entry: path.resolve(__dirname, 'src/lib/index.ts'),
name: 'xinyi-ui',
fileName: (format) => `xinyi-ui.${format}.js`
},
rollupOptions: {
// 确保外部化处理那些你不想打包进库的依赖
external: ['vue'],
output: {
// 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
globals: {
vue: 'Vue'
}
}
}
}

format 默认是['es','umd'] 所以会生成 xinyi-ui.es.js 和 xinyi-ui.umd.js 两个文件

修改package.json#

"files": ["dist"],
"main": "./dist/xinyi-ui.umd.js",
"module": "./dist/xinyi-ui.es.js",
"exports": {
".": {
"import": "./dist/my-lib.es.js",
"require": "./dist/my-lib.umd.js"
}
},

各字段意义

  • files 字段是要包含在项目中(npm publish 打包的tarball)的文件数组。
  • main CommonJS 规范的包入口文件
  • module ES Module 的包入口文件 package.json module
  • exports Node.js 12+ 支持作为"main" 的替代方案,它可以支持定义子路径导出和条件导出,同时封装内部未导出的模块。 package.json exports

发布npm 包#

注意事项#

name:

  • 必须是小写字母 可用 - 或 _ 连接
  • 不能跟npm上现有的name 重名

version

  • 每次publish 的版本不能与之前每一次的相同
  • 所以从第二次开始 先改version 再publish

测试是否发布成功#

  • vue create test-xinyi-ui 新建一个项目目录
  • 在 App.vue 中引入相关组件 和 css
import { Button } from 'xinyi-ui'
import 'xinyi-ui/dist/style.css'
export default {
components: { Button }
}

在模板中使用组件

<Button>按钮</Button>
vite构建库并发布
https://blog.cxyxiaoyu.top/posts/vite构建库并发布/
作者
小宇
发布于
2022-01-17
许可协议
CC BY-NC-SA 4.0