yaml-validator-typescript is a way to validate your Yaml file by using a defined model
$npm install yaml-validator-typescriptor
$yarn add yaml-validator-typescriptYou can set you model as you want. You just need to have properties initialized
If you don't want some property to be tested, you can implement Yaml
class TestOnlyKeys implements Yaml {
keysToTest: (keyof TestOnlyKeys)[] = ['key1', 'key2'];
key1: string = '';
key2: number = 0;
keyNotToTest: boolean = false;
}Here only
key1andkey2are tested You can also set some properties optionals:
class Optional implements Yaml {
keysToTest: string[] = ['valueToHave', 'valueOptional', 'arrayOptional'];
optionals: Set<string> = new Set(['valueOptional', 'arrayOptional']);
valueToHave: string = '';
valueOptional: string = '';
arrayOptional: {valueYouNeed1: string, valueYouNeed2: boolean}[] = [
{valueYouNeed1: '', valueYouNeed2: true},
];
}Here
valueOptionalandarrayOptionalare optionals But ifarrayOptionalis defined, he has to be right
Set a config file at the root of the project:
import MyClass from './somewhere';
module.exports = {
structure: new MyClass(),
files: ['file1.yaml', 'file2.yaml'],
};Then run the command
{
"scripts": {
"valid-yaml": "validate-yaml"
}
}If you have not set the files, you can put them in the command
{
"scripts": {
"valid-yaml": "validate-yaml file1.yaml file2.yaml"
}
}import MyClass from './somewhere';
const validator = new Validator(new MyClass());
validator.validate('path_of_my_file.yaml').then((errors) => {
if (errors.length > 0) {
console.log('I have some issues I need to fix 🙀');
errors.forEach((error) => {
console.log(`- ${result}`);
});
} else {
console.log('No Error in this code 💪');
}
});You can validate multiple file at the same time with the same validator
import MyClass from './somewhere';
const validator = new Validator(new MyClass());
validator
.validateMany('path_of_my_file.yaml', 'another_path_of_my_file.yaml')
.then((results) => {
files.forEach((file) => {
console.log(`${file.name}:`);
if (file.results.length > 0) {
console.log('I have some issues I need to fix 🙀');
file.results.forEach((error) => {
console.log(`- ${result}`);
});
} else {
console.log('No Error in this code 💪');
}
});
});