Closed marbemac closed 9 years ago
Thanks for the updates. No reason not to export the module. Why relax the constraints? If you feed the module a JSON doc and a value exists for a given key, shouldn't we assume it's required?
Ah I completely forgot that additional commits would be tacked onto this PR. That was meant as a change to my fork only, as it fits my specific project requirements. Feel free to cherry pick that first commit, or just add it yourself!
Ah! Gotcha! Thanks for pointing out the export issue, however.
Personally I really like that it applies as many constraints as it can guess. It's easier to remove constraints than to (look up the documentation on json-schema and) add them yourself.
I'd personally suggest adding an optional options
object parameter to the single function to pass any specific preferences like this. Which, when absent, defaults to the current behavior.
Still, +1 for module.exports =
It's already been added in the meantime. Never mind.
Yeah, it's done :-) Regarding constraints, perhaps it's useful to use some sort of configuration or CLI options to relax the constraints? Any thoughts?
Some new CLI option(s) will be translated into an options
object, which will then be fed to the core lib.
The more interesting question imo is what granularity of options to offer. The most extreme version is offering every option in the spec and give a way to specify several scopes within the source JSON to apply such a set of options to. Probably a complete overkill at this point.
A much easier alternative is a CLI option like --style=<const>
, where const
gives a way to convey your intent: lax
for as free as possible, strict
for as constrained as possible, or perhaps verbose
for as many schema options as possible (for the sake of seeing which options you have, and removing the ones you don't want).
Depending on this granularity, you can choose to provide an --options=<path>
to a json describing your options (in case they are many), or just keep it to a few generic options that are covered by a few extra CLI options.
I'd suggest starting with the --style
option (or a similar degree of simplicity), and make it more granular when you actually see that adding it would resolve a problem in practice. At that point, the original --style
option can become an alias for certain sets of the more specific options.
What options would you like to be able to use? I remember wanting to have something like verbose
.
var generator = require('json-schema-generator')
For whatever reason, in my setup (webpack, es6), this package doesn't work unless it's exported. Is there any reason not to export it?