{"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,"search_vec":"'140':43 '2.0.6':18 '90':92 'activ':121 'agent':9,129 'ai':8,128 'ai-ag':127 'api':41,65 'appear':120 'area':106 'array':50 'axio':57 'axios-bas':56 'axl':67 'base':58 'bundl':109 'cadenc':119 'chainabl':69 'cli':33,130 'commit':27,38 'common':47 'composit':64 'cover':46 'coverag':94 'current':15 'ecosystem':116 'end':13 'enum':79 'factori':72,74 'focus':103 'format':24 'friend':10 'front':12 'front-end':11 'function':45 'generat':42 'git':30 'hook':28,31 'javascript':126 'librari':101 'like':96 'lint':23,39 'log':37 'math':53 'minor':124 'multipl':123 'number':49 'object':51 'often':102 'one':105 'orient':6 'packag':117 'plugin':98 'plus':137 'pre':26 'pre-commit':25 'preset':21,131 'progress':59 'provid':20 'publish':36 'rattail':1,2,108 'releas':118 'request':60 'rival':95 'rule':71 'ruler':73 'safe':78 'scenario':54 'shakabl':89 'ship':82 'singl':114 'string':48 'support':66 'test':93 'tool':61 'toolchain':14,34,132 'tree':88 'tree-shak':87 'type':77,85 'type-saf':76 'typescript':84,133 'util':44,80,100,134 'valid':70 'version':17,125 'vite':5,97,115,136 'vite-plus':135 'vue':63","created_at":"2026-04-27T17:02:06.668422+00:00","updated_at":"2026-04-27T17:02:06.668422+00:00","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,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.21.2","cli_name":"rattail","cli_version":null,"type":"library","homepage":"https://rattail.vercel.app","github":"https://github.com/varletjs/rattail","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/rattail","openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework","testing","http-networking"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-18","next_check":"2026-07-26","install_tag":null}}