389 字
2 分钟
vite构建库并发布
添加入口文件 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
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 包
- npm login 登录在https://www.npmjs.com/ 注册的账号
- npm whomi 确认登录
- npm publish
注意事项
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>