- 文件目录如下:
lib下的目录是要打包成单个js的源文件
- 更改package.json
{ "name": "xt-plugin-auth", "version": "1.0.0", "main": "index.js", "license": "MIT", "type": "module", "scripts": { "build-plugin": "node ./build/build.js" }, "devDependencies": { "@rollup/plugin-commonjs": "^25.0.7", "@vitejs/plugin-vue": "^5.0.4", "typescript": "^5.2.2", "vite": "^5.2.8", "vue": "^3.4.21" } }
- 更改vite.config.ts
import {defineConfig} from "vite"; export default defineConfig({ plugins: [require('./build/plugin-build.js')], })
- 新建目录 build,在此目录下创建文件 build.js、plugin-build.js
- build.js文件内容
import pluginBuild from "./plugin-build.js"; import { readdirSync, statSync } from 'fs'; import { join } from "path"; const getAllDirectories = (path) => { const items = readdirSync(path); const directories = []; items.forEach((item) => { const itemPath = join(path, item); const stat = statSync(itemPath); if (stat.isDirectory()) { directories.push(item); } }); return directories; }; const libList = getAllDirectories(join(process.cwd(), 'lib')) async function init(){ for (let i = 0; i < libList.length; i++) { await pluginBuild(libList[i]) } process.exit(); } init()
- plugin-build.js 文件内容
import vuePlugin from '@vitejs/plugin-vue' import commonjs from '@rollup/plugin-commonjs'; import {build} from "vite"; import fs from 'fs'; import {join} from "path"; export default async function pluginBuild (pluginName) { await build({ base: './', build: { minify: true, cssCodeSplit: true, outDir: `dist/${pluginName}`, lib: { formats: ['umd'], entry: `./lib/${pluginName}/index.ts`, name: pluginName, fileName: () => `${pluginName}.js` }, rollupOptions: { external: ['vue'], output: { globals: { vue: 'pluginVue', } } }, }, plugins: [ commonjs(), vuePlugin(), ] }) const savePath = join(process.cwd(), 'dist', `${pluginName}.js`) const directoryPath = join(process.cwd(), 'dist', pluginName) const filePath = join(process.cwd(), 'dist', pluginName, `${pluginName}.js`) fs.renameSync(filePath, savePath) console.log('delete plugin temp path: ' + directoryPath) fs.rmdirSync(directoryPath); }
© 版权声明
THE END
请登录后查看评论内容