2022-08-10 10:09:02 -05:00
|
|
|
export const hooks = {
|
2022-03-06 12:48:51 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Hook into neutrino configuration.
|
|
|
|
* @param {string} target The build target; e.g. `server`.
|
|
|
|
* @param {Object} config The neutrino configuration.
|
|
|
|
*/
|
2022-03-08 16:03:06 -06:00
|
|
|
'@flecks/core.build': (target, config) => {
|
2022-08-10 10:09:02 -05:00
|
|
|
if ('something' === target) {
|
|
|
|
config[target].use.push(someNeutrinoMiddleware);
|
|
|
|
}
|
|
|
|
},
|
2022-03-06 12:48:51 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Alter build configurations after they have been hooked.
|
|
|
|
* @param {Object} configs The neutrino configurations.
|
|
|
|
*/
|
|
|
|
'@flecks/core.build.alter': (configs) => {
|
|
|
|
// Maybe we want to do something if a config exists..?
|
|
|
|
if (configs.something) {
|
|
|
|
// Do something...
|
|
|
|
// And then maybe we want to remove it from the build configuration..?
|
|
|
|
delete configs.something;
|
|
|
|
}
|
|
|
|
},
|
2022-03-09 07:25:58 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Register build configuration.
|
|
|
|
*/
|
|
|
|
'@flecks/core.build.config': () => [
|
2022-03-06 12:48:51 -06:00
|
|
|
/**
|
2022-08-10 10:09:02 -05:00
|
|
|
* If you document your config files like this, documentation will be automatically
|
|
|
|
* generated.
|
|
|
|
*/
|
|
|
|
'.myrc.js',
|
2022-03-06 12:48:51 -06:00
|
|
|
/**
|
2022-08-10 10:09:02 -05:00
|
|
|
* Make sure you return them as an array expression, like this.
|
|
|
|
*/
|
|
|
|
['mygeneralrc.js', {specifier: (specific) => `${specific}.mygeneralrc.js`}],
|
|
|
|
],
|
2022-03-06 12:48:51 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Define CLI commands.
|
2022-03-08 16:03:06 -06:00
|
|
|
*/
|
2022-08-10 10:09:02 -05:00
|
|
|
'@flecks/core.commands': (program) => ({
|
|
|
|
// So this could be invoked like:
|
|
|
|
// npx flecks something -t --blow-up blah
|
|
|
|
something: {
|
|
|
|
action: (...args) => {
|
|
|
|
// Run the command...
|
|
|
|
},
|
|
|
|
args: [
|
|
|
|
'<somearg>',
|
|
|
|
],
|
|
|
|
description: 'This command does tests and also blows up',
|
|
|
|
options: [
|
|
|
|
'-t, --test', 'Do a test',
|
|
|
|
'-b, --blow-up', 'Blow up instead of running the command',
|
|
|
|
],
|
2022-03-08 16:03:06 -06:00
|
|
|
},
|
2022-08-10 10:09:02 -05:00
|
|
|
}),
|
2022-03-08 16:03:06 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Define configuration.
|
|
|
|
*/
|
|
|
|
'@flecks/core.config': () => ({
|
|
|
|
whatever: 'configuration',
|
|
|
|
your: 1337,
|
|
|
|
fleck: 'needs',
|
2022-03-06 12:48:51 -06:00
|
|
|
/**
|
2022-08-10 10:09:02 -05:00
|
|
|
* Also, comments like this will be used to automatically generate documentation.
|
|
|
|
*/
|
|
|
|
though: 'you should keep the values serializable',
|
|
|
|
}),
|
2022-03-06 12:48:51 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Invoked when a fleck is HMR'd
|
|
|
|
* @param {string} path The path of the fleck
|
|
|
|
* @param {Module} updatedFleck The updated fleck module.
|
|
|
|
*/
|
|
|
|
'@flecks/core.hmr': (path, updatedFleck) => {
|
|
|
|
if ('my-fleck' === path) {
|
|
|
|
updatedFleck.doSomething();
|
|
|
|
}
|
|
|
|
},
|
2022-03-06 12:48:51 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Invoked when a gathered class is HMR'd.
|
|
|
|
* @param {constructor} Class The class.
|
|
|
|
* @param {string} hook The gather hook; e.g. `@flecks/db/server.models`.
|
|
|
|
*/
|
|
|
|
'@flecks/core.hmr.gathered': (Class, hook) => {
|
|
|
|
// Do something with Class...
|
|
|
|
},
|
2022-03-06 12:48:51 -06:00
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Invoked when the application is starting. Use for order-independent initialization tasks.
|
|
|
|
*/
|
|
|
|
'@flecks/core.starting': (flecks) => {
|
|
|
|
flecks.set('$my-fleck/value', initializeMyValue());
|
2022-03-06 12:48:51 -06:00
|
|
|
},
|
|
|
|
|
2022-08-10 10:09:02 -05:00
|
|
|
/**
|
|
|
|
* Define neutrino build targets.
|
|
|
|
*/
|
|
|
|
'@flecks/core.targets': () => ['sometarget'],
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Hook into webpack configuration.
|
|
|
|
* @param {string} target The build target; e.g. `server`.
|
|
|
|
* @param {Object} config The neutrino configuration.
|
|
|
|
*/
|
|
|
|
'@flecks/core.webpack': (target, config) => {
|
|
|
|
if ('something' === target) {
|
|
|
|
config.stats = 'verbose';
|
|
|
|
}
|
|
|
|
},
|
|
|
|
};
|