{"id":21856,"library":"rattail","title":"Rattail","description":"Rattail is a Vite+ oriented and AI Agent friendly front-end toolchain, currently at version 2.0.6. It provides presets for linting, formatting, pre-commit hooks, and git hooks, a CLI toolchain for publishing, logs, commit lint, and API generation, 140+ utility functions covering common, string, number, array, object, and math scenarios, an axios-based progressive request tool with Vue composition API support (Axle), a chainable validation rule factory (Ruler Factory), and type-safe enum utilities. It ships with TypeScript types, is tree-shakable, and has 90%+ test coverage. Rivals like Vite plugins and utility libraries often focus on one area, while Rattail bundles all these into a single Vite+ ecosystem package. Release cadence appears active with multiple minor versions.","status":"active","version":"2.0.6","language":"javascript","source_language":"en","source_url":"https://github.com/varletjs/rattail","tags":["javascript","ai-agent","cli","presets","toolchain","typescript","utilities","vite-plus"],"install":[{"cmd":"npm install rattail","lang":"bash","label":"npm"},{"cmd":"yarn add rattail","lang":"bash","label":"yarn"},{"cmd":"pnpm add rattail","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for Vite+ integration features","package":"@voidzero-dev/vite-plus-core","optional":false},{"reason":"Peer dependency for Vite+ integration features","package":"vite-plus","optional":false}],"imports":[{"note":"Rattail is ESM-only; require() will fail.","wrong":"const rattail = require('rattail')","symbol":"rattail","correct":"import rattail from 'rattail'"},{"note":"This is a named export, not default.","wrong":"import defineRattailConfig from 'rattail'","symbol":"defineRattailConfig","correct":"import { defineRattailConfig } from 'rattail'"},{"note":"Axle is a separate subpath export; import from 'rattail/axle' to avoid pulling unused code. Since v2.","wrong":"import { Axle } from 'rattail'","symbol":"Axle (request tool)","correct":"import { createAxle } from 'rattail/axle'"},{"note":"Ruler factory is exported from rattail/ruler subpath. Direct import from rattail may not include it.","wrong":"import { RulerFactory } from 'rattail'","symbol":"RulerFactory","correct":"import { RulerFactory } from 'rattail/ruler'"},{"note":"Enum utilities are subpath exports; import from 'rattail/enum'.","wrong":"import { createEnum } from 'rattail'","symbol":"enum utilities (createEnum)","correct":"import { createEnum } from 'rattail/enum'"},{"note":"Utility functions are exported from 'rattail/utils' subpath to enable tree-shaking.","wrong":"import { isString } from 'rattail'","symbol":"utility functions (isString, etc.)","correct":"import { isString } from 'rattail/utils'"}],"quickstart":{"code":"// Install: pnpm add rattail @voidzero-dev/vite-plus-core vite-plus\n\n// vite.config.ts\nimport { defineRattailConfig } from 'rattail';\n\nexport default defineRattailConfig({\n  // base Vite+ config\n});\n\n// Use a utility function\nimport { isString } from 'rattail/utils';\nconsole.log(isString('hello')); // true\n\n// Use Axle request tool\nimport { createAxle } from 'rattail/axle';\nconst axle = createAxle({ baseURL: 'https://api.example.com' });\nasync function fetchData() {\n  const res = await axle.get('/data');\n  return res.data;\n}\n\n// Use Ruler Factory for validation\nimport { RulerFactory } from 'rattail/ruler';\nconst rules = new RulerFactory()\n  .required('Name is required')\n  .minLength(2, 'Name too short')\n  .build();\n\n// Use createEnum\nimport { createEnum } from 'rattail/enum';\nconst Status = createEnum({\n  Pending: 0,\n  Active: 1,\n  Inactive: 2,\n});","lang":"typescript","description":"Shows how to install, configure with defineRattailConfig, and use utility functions, Axle, RulerFactory, and createEnum."},"warnings":[{"fix":"Update imports to ESM syntax and use subpath exports (e.g., 'rattail/utils' instead of 'rattail'). If using CommonJS, consider migrating to ESM.","message":"In v2.0.0, the package was overhauled to be ESM-only and subpath exports were introduced. Previous v1.x CJS imports no longer work.","severity":"breaking","affected_versions":"^2.0.0"},{"fix":"Change import { createAxle } from 'rattail/axle'.","message":"In v2.0.0, 'Axle' was moved to 'rattail/axle' subpath. Direct import from 'rattail' will not work.","severity":"breaking","affected_versions":"^2.0.0"},{"fix":"Use 'import { isString } from 'rattail/utils'' instead of 'import { isString } from 'rattail''.","message":"In v2.0.0, many utility functions were moved to 'rattail/utils'. Direct imports from 'rattail' are deprecated and may be removed.","severity":"breaking","affected_versions":"^2.0.0"},{"fix":"Install pnpm globally (npm install -g pnpm) and use pnpm for this project.","message":"The package requires pnpm >= 10.0.0. Using npm or yarn may cause peer dependency issues.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Ensure these are installed: pnpm add @voidzero-dev/vite-plus-core vite-plus","message":"Peer dependencies @voidzero-dev/vite-plus-core and vite-plus are required. If not installed, imports may fail at runtime.","severity":"gotcha","affected_versions":"*"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use 'import rattail from 'rattail' in an ESM context, or enable ESM in your package.json by adding 'type': 'module'.","cause":"Trying to require() an ESM-only module in a CommonJS context.","error":"Cannot find module 'rattail' or 'ERR_REQUIRE_ESM'"},{"fix":"Change import to 'import { createAxle } from 'rattail/axle'.","cause":"Importing from 'rattail' directly; createAxle is a subpath export from 'rattail/axle'","error":"Uncaught SyntaxError: The requested module 'rattail' does not provide an export named 'createAxle'"},{"fix":"Upgrade to rattail >=2.0.0: pnpm update rattail","cause":"The subpath export 'rattail/utils' might not be present in older v1.x versions, or the package version is too old.","error":"Module not found: Error: Can't resolve 'rattail/utils'"},{"fix":"Run 'pnpm add @voidzero-dev/vite-plus-core' or use pnpm with auto-install-peers=true.","cause":"Missing peer dependency during installation.","error":"Could not resolve dependency: peer @voidzero-dev/vite-plus-core@>=0.1.16 from rattail@2.0.6"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}