Tooling packages
These live under internal/ in the source repo and are installed from npm in generated projects. All 1.0.1.
@vinicunca/vite-config
Opinionated Vite config for Vue apps and libraries. Peers: vite ^8, unocss ^66 (you own uno.config.ts).
import { defineConfig } from '@vinicunca/vite-config';
export default defineConfig(async () => ({
application: {
licenseOptions: { copyright: 'Copyright (C) 2026 Acme' },
printInfoMap: { Docs: 'https://vinicunca.dev/taman' },
},
vite: {
server: { warmup: { clientFiles: ['./src/main.ts'] } },
},
}));
defineConfig uses application mode when index.html exists, otherwise library. Pass 'application' | 'library' as the second argument to force it. The vite object is mergeConfig'd last (arrays such as server.warmup.clientFiles are appended).
Application options
Precedence: package defaults → env vars → application. Boolean env flags are false when unset.
| Option | Default | Notes |
|---|---|---|
archiver / archiverPluginOptions | env VITE_ARCHIVER | Zip dist |
compress / compressTypes | env VITE_COMPRESS | gzip, brotli |
devtools | env VITE_DEVTOOLS | Vue DevTools, dev only |
extraAppConfig | true | Build only; runtime _TAMAN_ADMIN_DEV_CONFIG_ |
html | true | html-minifier-terser |
i18n | true | @intlify/unplugin-vue-i18n, composition-only |
importmap / importmapOptions | off | CDN for vue/pinia/vue-router/vue-demi |
injectAppLoading | env VITE_INJECT_APP_LOADING | ./loading.html or bundled default |
injectMetadata | true | __TAMAN_METADATA__, import.meta.env.VITE_APP_VERSION |
license / licenseOptions | true | Banner; fields fall back to package.json |
print / printInfoMap | dev only | Extra lines under URLs |
pwa / pwaOptions | env VITE_PWA | Manifest name from VITE_APP_TITLE |
visualizer | env VITE_VISUALIZER | rollup-plugin-visualizer |
Other env: VITE_BASE (default /), VITE_PORT (default 5173), VITE_APP_TITLE, VITE_APP_NAMESPACE. Loaded from .env, .env.local, .env.[mode], .env.[mode].local.
Runtime contracts: window._TAMAN_ADMIN_DEV_CONFIG_, __TAMAN_METADATA__, loading-screen data-app-loading + preferences theme key. Full detail is in internal/vite-config/README.md.
Library options
Builds src/index.ts → dist/index.mjs, externalizes dependencies and peerDependencies. Options: dts (default false), injectMetadata, devtools, visualizer.
@vinicunca/tsconfig
JSON presets (no JS runtime):
| File | Use |
|---|---|
base.json | Strict ESNext, verbatimModuleSyntax, skipLibCheck: true, ${configDir} excludes |
web.json | Vue JSX, DOM libs, vite/client, declaration: false |
library.json | Like web but declaration: true, noEmit: false |
node.json | NodeNext / NodeNext |
node-bundler.json | ESNext + bundler resolution, @types/node |
{ "extends": "@vinicunca/tsconfig/web.json" }
@vinicunca/node-utils
Node helpers for tooling (not the Vue app):
formatNow();
ensureFile / outputJSON / readJSON;
getStagedFiles();
generatorContentHash(content);
findMonorepoRoot();
getPackages() / getPackagesSync();
toPosixPath(path);
UNICODE;
colors; // chalk
consola;
execa;
fs; // node:fs/promises
readPackageJSON();
@vinicunca/commitlint-config
import { defineConfig } from '@vinicunca/commitlint-config';
export default defineConfig(); // or defineConfig({ cwd, scopes })
Peers: @commitlint/cli ^21; optional czg. Taman's .commitlintrc.js re-exports the default.
- Extends
@commitlint/config-conventional function-rules/scope-enum: workspace package names (full and unscoped short form) plusproject,style,lint,ci,dev,deploy,other- Types:
feat,fix,perf,style,docs,test,refactor,build,ci,chore,revert,types,release - Header max 108; body leading blank required
- cz-git aliases:
:bbump deps,:cchore config,:fdocs typos,:rREADME,:sformat