|
| 1 | +# @gasket/resolve |
| 2 | + |
| 3 | +Essential module resolution & configuration management for gasket plugins & presets. |
| 4 | + |
| 5 | +## Usage |
| 6 | + |
| 7 | +**@gasket/any-preset** |
| 8 | +``` js |
| 9 | +// index.js |
| 10 | +module.exports = require('@gasket/resolve/plugins')({ |
| 11 | + dirname: __dirname, |
| 12 | + resolve: name => require(name) |
| 13 | +}); |
| 14 | +``` |
| 15 | + |
| 16 | +## API Documentation |
| 17 | + |
| 18 | +### `resolvePlugins({ dirname, resolve }` |
| 19 | + |
| 20 | +``` js |
| 21 | +const { resolvePlugins } = require('@gasket/resolve'); |
| 22 | +const resolvePlugins = require('@gasket/resolve/plugins'); |
| 23 | + |
| 24 | +console.log(resolvePlugins({ |
| 25 | + dirname: __dirname, |
| 26 | + resolve: name => require(name) |
| 27 | +})) |
| 28 | +``` |
| 29 | + |
| 30 | +Responds with an Array of plugin information (i.e. a "preset"). |
| 31 | + |
| 32 | +### Preset data structure |
| 33 | + |
| 34 | +The data structure generated for a preset is a combination of the |
| 35 | +`package.json` dependencies and the `preset.json` manifest file. For example, |
| 36 | +consider `@gasket/some-plugin` that is required by `@gasket/any-preset` as: |
| 37 | + |
| 38 | +``` js |
| 39 | +"dependencies": { |
| 40 | + "@gasket/some-plugin": "^1.1.0" |
| 41 | +} |
| 42 | +``` |
| 43 | + |
| 44 | +with the following `preset.json`: |
| 45 | + |
| 46 | +``` js |
| 47 | +{ |
| 48 | + 'some-plugin': { |
| 49 | + 'arbitrary': 'default config values', |
| 50 | + 'consumed': 'by the plugin', |
| 51 | + 'these': 'can be overriden', |
| 52 | + 'in your': 'gasket.config.js' |
| 53 | + } |
| 54 | +} |
| 55 | +``` |
| 56 | + |
| 57 | +This would get transformed into the following by `@gasket/resolve/plugins`: |
| 58 | + |
| 59 | +``` js |
| 60 | +{ |
| 61 | + required: module, // `require`d plugin material. |
| 62 | + from: '@gasket/default-preset', // Preset that included this plugin. |
| 63 | + range: '^1.1.0', // Semver range it was included at. |
| 64 | + shortName: 'some', // Convenient short name. |
| 65 | + name: '@gasket/some-plugin', // Full npm package name. |
| 66 | + config: { // Config read from preset.json. |
| 67 | + 'arbitrary': 'default config values', |
| 68 | + 'consumed': 'by the plugin', |
| 69 | + 'these': 'can be overriden', |
| 70 | + 'in your': 'gasket.config.js' |
| 71 | + } |
| 72 | +} |
| 73 | +``` |
| 74 | + |
| 75 | +### `new Resolver({ resolveFrom, resolve })` |
| 76 | + |
| 77 | +Manages resolution operations for plugins and presets. |
| 78 | + |
| 79 | +``` js |
| 80 | +const { Resolver } = require('@gasket/resolve'); |
| 81 | +const Resolver = require('@gasket/resolve/resolve'); |
| 82 | + |
| 83 | +const resolver = new Resolver({ |
| 84 | + resolveFrom: `${__dirname}/node_modules`, |
| 85 | + resolve: name => require(name) |
| 86 | +}); |
| 87 | + |
| 88 | +// Resolve a plugin |
| 89 | +resolver.pluginFor('short-name'); |
| 90 | + |
| 91 | +// Resolve a preset |
| 92 | +resolver.presetFor('short-name'); |
| 93 | +``` |
| 94 | + |
| 95 | +##### LICENSE: [MIT](../../LICENSE) |
0 commit comments