赞
踩
yarn create vite
,我们创建一个 vite 项目,选择 vue+ts 完成项目创建import { App } from 'vue';
import Button from './Button.vue';
Button.install = (app: App) => {
// 组件注册,按需引入
app.component('Button', Button);
return app;
};
export default Button;
/**
* 导出所有组件
*/
import Button from './button/Button';
export default [
Button
];
export { Button };
import { App } from 'vue'; import components from './components/components'; // 这部分,如果你有一些配置参数要导出就可以用这个 import * as ButtonTypes from './components/button/types'; // 所有组件 export * from './components/components'; // 完整引入组件 const install = (app: App) => { components.forEach((component) => { app.use(component as unknown as { install: () => any }); }); }; export default { install, ...ButtonTypes };
yarn add vite-plugin-dts -D
这个插件可以将项目打包出库文件.d.ts。import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import path, { resolve } from 'path'; import dts from 'vite-plugin-dts'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue(), dts({ insertTypesEntry: true, cleanVueFileName: true, include: ['packages/**/*'] }) ], resolve: { alias: { '@': path.resolve(__dirname, './src'), '~': path.resolve(__dirname, './packages') } }, build: { outDir: 'lib', lib: { entry: resolve(__dirname, 'packages/index.ts'), name: 'CraneElement', fileName: (format) => `crane.${format}.js` }, rollupOptions: { external: ['vue'], output: { globals: { vue: 'Vue' } } } } });
{ "extends": "./tsconfig.paths.json", "compilerOptions": { "target": "ES2020", "useDefineForClassFields": true, "module": "ESNext", "lib": ["ES2020", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "preserve", /* Linting */ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, "noImplicitAny": false, "allowJs": true, "paths": { "@/*": ["./src/*"], "~/*": ["./packages/*"] } }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "exclude": [ "node_modules" ], "references": [{ "path": "./tsconfig.node.json" }] }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。