generated from mirrors/plugin-sample-vite-svelte
Initial commit
This commit is contained in:
commit
04f54e248a
42 changed files with 4538 additions and 0 deletions
163
vite.config.ts
Normal file
163
vite.config.ts
Normal file
|
@ -0,0 +1,163 @@
|
|||
import { resolve } from "path"
|
||||
import { defineConfig, loadEnv } from "vite"
|
||||
import { viteStaticCopy } from "vite-plugin-static-copy"
|
||||
import livereload from "rollup-plugin-livereload"
|
||||
import { svelte } from "@sveltejs/vite-plugin-svelte"
|
||||
import zipPack from "vite-plugin-zip-pack";
|
||||
import fg from 'fast-glob';
|
||||
|
||||
import vitePluginYamlI18n from './yaml-plugin';
|
||||
|
||||
const env = process.env;
|
||||
const isSrcmap = env.VITE_SOURCEMAP === 'inline';
|
||||
const isDev = env.NODE_ENV === 'development';
|
||||
|
||||
const outputDir = isDev ? "dev" : "dist";
|
||||
|
||||
console.log("isDev=>", isDev);
|
||||
console.log("isSrcmap=>", isSrcmap);
|
||||
console.log("outputDir=>", outputDir);
|
||||
|
||||
export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
"@": resolve(__dirname, "src"),
|
||||
}
|
||||
},
|
||||
|
||||
plugins: [
|
||||
svelte(),
|
||||
|
||||
vitePluginYamlI18n({
|
||||
inDir: 'public/i18n',
|
||||
outDir: `${outputDir}/i18n`
|
||||
}),
|
||||
|
||||
viteStaticCopy({
|
||||
targets: [
|
||||
{ src: "./README*.md", dest: "./" },
|
||||
{ src: "./plugin.json", dest: "./" },
|
||||
{ src: "./preview.png", dest: "./" },
|
||||
{ src: "./icon.png", dest: "./" }
|
||||
],
|
||||
}),
|
||||
|
||||
],
|
||||
|
||||
define: {
|
||||
"process.env.DEV_MODE": JSON.stringify(isDev),
|
||||
"process.env.NODE_ENV": JSON.stringify(env.NODE_ENV)
|
||||
},
|
||||
|
||||
build: {
|
||||
outDir: outputDir,
|
||||
emptyOutDir: false,
|
||||
minify: true,
|
||||
sourcemap: isSrcmap ? 'inline' : false,
|
||||
|
||||
lib: {
|
||||
entry: resolve(__dirname, "src/index.ts"),
|
||||
fileName: "index",
|
||||
formats: ["cjs"],
|
||||
},
|
||||
rollupOptions: {
|
||||
plugins: [
|
||||
...(isDev ? [
|
||||
livereload(outputDir),
|
||||
{
|
||||
name: 'watch-external',
|
||||
async buildStart() {
|
||||
const files = await fg([
|
||||
'public/i18n/**',
|
||||
'./README*.md',
|
||||
'./plugin.json'
|
||||
]);
|
||||
for (let file of files) {
|
||||
this.addWatchFile(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
] : [
|
||||
// Clean up unnecessary files under dist dir
|
||||
cleanupDistFiles({
|
||||
patterns: ['i18n/*.yaml', 'i18n/*.md'],
|
||||
distDir: outputDir
|
||||
}),
|
||||
zipPack({
|
||||
inDir: './dist',
|
||||
outDir: './',
|
||||
outFileName: 'package.zip'
|
||||
})
|
||||
])
|
||||
],
|
||||
|
||||
external: ["siyuan", "process"],
|
||||
|
||||
output: {
|
||||
entryFileNames: "[name].js",
|
||||
assetFileNames: (assetInfo) => {
|
||||
if (assetInfo.name === "style.css") {
|
||||
return "index.css"
|
||||
}
|
||||
return assetInfo.name
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Clean up some dist files after compiled
|
||||
* @author frostime
|
||||
* @param options:
|
||||
* @returns
|
||||
*/
|
||||
function cleanupDistFiles(options: { patterns: string[], distDir: string }) {
|
||||
const {
|
||||
patterns,
|
||||
distDir
|
||||
} = options;
|
||||
|
||||
return {
|
||||
name: 'rollup-plugin-cleanup',
|
||||
enforce: 'post',
|
||||
writeBundle: {
|
||||
sequential: true,
|
||||
order: 'post' as 'post',
|
||||
async handler() {
|
||||
const fg = await import('fast-glob');
|
||||
const fs = await import('fs');
|
||||
// const path = await import('path');
|
||||
|
||||
// 使用 glob 语法,确保能匹配到文件
|
||||
const distPatterns = patterns.map(pat => `${distDir}/${pat}`);
|
||||
console.debug('Cleanup searching patterns:', distPatterns);
|
||||
|
||||
const files = await fg.default(distPatterns, {
|
||||
dot: true,
|
||||
absolute: true,
|
||||
onlyFiles: false
|
||||
});
|
||||
|
||||
// console.info('Files to be cleaned up:', files);
|
||||
|
||||
for (const file of files) {
|
||||
try {
|
||||
if (fs.default.existsSync(file)) {
|
||||
const stat = fs.default.statSync(file);
|
||||
if (stat.isDirectory()) {
|
||||
fs.default.rmSync(file, { recursive: true });
|
||||
} else {
|
||||
fs.default.unlinkSync(file);
|
||||
}
|
||||
console.log(`Cleaned up: ${file}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Failed to clean up ${file}:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue