翻译:
使用 : @exodus/schemasafe。 。 。 .
[尖叫声] 这是一个代码库,因此如果使用不可信输入,将带来风险.
使用量
用法 :
- 将插件添加到
babel.config.js,例如:
module.exports = {
plugins: [['@exodus/schemasafe-babel-plugin', pluginParams]],
}
pluginParams 应该是有效的 斯克马萨德-巴贝尔-普卢金-帕拉姆斯 对象.
- 在您的工程中导入 JSON 计划 :
import validateData from './data.schemasafe.json'
import { validateMeta } from './meta.schemasafe.json' // Named imports also work.
- 输入的变量在编译后成为验证器功能
try {
validateData(data)
} catch (err) {
console.log(err.message) // 'JSON validation failed for...'
}
API 参考
/*
See https://github.com/ExodusMovement/schemasafe#options for all available options.
*/
interface SchemasafeOptions {
schemas?: JsonSchema[] // Extra schemas to be referenced from a master schema.
formats?: Object // Extra formats to be used in the supplied schemas.
removeAdditional?: boolean // Removes non-valid properties from the original object if true.
}
interface SchemasafeBabelPluginParams {
options: {
globs: string[] // Global patterns to match against particular schemas.
schemasafeOptions?: SchemasafeOptions
}[]
}
示例
plugins: [
[
'@exodus/schemasafe-babel-plugin',
{
options: [
{
globs: ['**/src/schemas/*.schema.json'],
schemasafeOptions: {
formats: { 'no-foo': (str) => !str.includes('foo') },
},
},
{
globs: ['**/node_modules/some-package/**/*.schemasafe.json'],
schemasafeOptions: {
enableExtra: true,
removeAdditional: true,
},
},
],
},
],
]