https://github.com/mathix420/vuito
Simple, lightweight, isomorphic, template-based validation.
https://github.com/mathix420/vuito
frontend full-stack lightweight server-side template validation
Last synced: 5 months ago
JSON representation
Simple, lightweight, isomorphic, template-based validation.
- Host: GitHub
- URL: https://github.com/mathix420/vuito
- Owner: mathix420
- License: mit
- Created: 2021-03-20T14:42:27.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-02-03T09:26:34.000Z (10 months ago)
- Last Synced: 2025-03-24T14:50:28.481Z (8 months ago)
- Topics: frontend, full-stack, lightweight, server-side, template, validation
- Language: TypeScript
- Homepage: https://vuito.vercel.app
- Size: 2.56 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-vue - @vuito/vue - Simple, lightweight, isomorphic, template-based validation. ` 📝 11 days ago` (UI Utilities [🔝](#readme))
- awesome-vue - @vuito/vue - Simple, lightweight, isomorphic, and template-based validation library. (Components & Libraries / UI Utilities)
- fucking-awesome-vue - @vuito/vue - Simple, lightweight, isomorphic, and template-based validation library. (Components & Libraries / UI Utilities)
- awesome-vue - @vuito/vue - Simple, lightweight, isomorphic, and template-based validation library. (Components & Libraries / UI Utilities)
README
# vuito
Simple, lightweight, isomorphic, and template-based validation library.
[](https://bundlephobia.com/result?p=vuito)  [](https://bundlephobia.com/result?p=vuito) [](https://codeclimate.com/github/mathix420/vuito/maintainability) [](https://codeclimate.com/github/mathix420/vuito/test_coverage)
---
⚡ [Installation](#installation) ⚡ [Usage](#usage) ⚡ [Vue.js Mixin](#vuejs-mixin) ⚡ [Template Reuse](#template-reuse) ⚡
---
# Installation
```bash
npm i vuito
```
Or via [JsDeliver](https://www.jsdelivr.com/package/npm/vuito?version=latest), [UNPKG](https://unpkg.com/browse/vuito@latest/vuito.min.js), or [bundle.run](https://bundle.run/vuito@latest).
# Usage
Full documentation ➡️ https://vuito.vercel.app
## Imports
**CJS**
```javascript
const { regex, required } = require('vuito');
// OR
const regex = require('vuito/validators/regex.cjs');
```
Vuito is fully tree-shakable, so you can import only methods you need.
**ES6**
```javascript
import { regex, required } from 'vuito';
```
**Directly in the browser**
```javascript
import { regex, required } from 'https://esm.run/vuito';
```
## Templates
With templates, you can easily create and reuse validations.
`validations/auth.ts`:
```typescript
import { templateify, required, minLength, maxLength } from 'vuito';
export const signIn = templateify({
username: [
{ test: required, message: 'Please enter a username.' },
{ test: minLength(3), message: 'Username is too short.' },
{ test: maxLength(20), message: 'Username is too big.' },
],
password: [
{ test: required, message: 'Please enter a password.' },
{ test: minLength(12), message: 'Password is too short.' },
]
});
```
## Validate
`index.ts`:
```typescript
import { signIn } from './validations/auth';
signIn.check({
username: 'test123',
password: 'tooshort',
})
.then(() => console.log('Sign-in data is valid!'))
.catch(console.error)
// Result: console.error: Password is too short.
```
# Vue.js Mixin
> ⚠️ Only supporting Vue2 currently ⚠️
[](https://bundlephobia.com/result?p=@vuito/vue)
Use vuito with Vue.js or Nuxt.js like a breeze!
```bash
npm i @vuito/vue
```
`pages/signin.vue`:
```html
{{ errors.username }}
{{ errors.password }}
import { signIn } from '~/validations/auth';
import Vuito from '@vuito/vue';
export default {
mixins: [Vuito(signIn)]
}
```
# Template Reuse
To reuse your validation template you have many solutions.
1. Create a validation package in your monorepo.
2. Create a private package in NPM, GitHub, GitLab, ...
3. Any other solution that lets you share a js/ts file between projects.
4. Maybe [SWAP](https://github.com/mathix420/swap) would be a good option for you.