Create a sample bundle
A sample should have the same name as the service, but it may include a short
description in the name after the service name as well. E.g. twitch-chat
or
obs-scenelist
.
Create a folder in samples
named after the sample and add a package.json
and
a tsconfig.json
:
{
"name": "<the sample name>",
"private": true,
"version": "0.2.0",
"nodecg": {
"compatibleRange": "^1.1.1",
"bundleDependencies": {
"nodecg-io-<the service name>": "^0.2.0"
}
},
"scripts": {
"build": "tsc -b",
"watch": "tsc -b -w",
"clean": "tsc -b --clean"
},
"license": "MIT",
"dependencies": {
"nodecg-io-<the service name>": "^0.2.0",
"nodecg-io-core": "^0.2.0",
"@types/node": "^15.0.2",
"nodecg-types": "^1.8.2",
"typescript": "^4.2.4"
}
}
{
"extends": "../../tsconfig.common.json",
"references": [
{
"path": "../../nodecg-io-core"
},
{
"path": "../../services/nodecg-io-<the service name>"
}
]
}
Now you can create a file called extension/index.ts
. Here's a template. Make
sure you replace all the comments with your own code.
import { NodeCG } from "nodecg-types/types/server";
import { requireService } from "nodecg-io-core";
import { TheServicesExportedClient } from "nodecg-io-<the services name>";
module.exports = function (nodecg: NodeCG) {
nodecg.log.info("Sample bundle for <the-service-name> started");
const service = requireService<TheServicesExportedClient>(
nodecg,
"<the-service-name>"
);
service?.onAvailable((client) => {
nodecg.log.info("<the-service-name> client has been updated.");
// TODO do something with the client to demonstrate the functionality.
});
service?.onUnavailable(() =>
nodecg.log.info("<the-service-name> client has been unset.")
);
};
Next steps
You could add documentation for the sample bundle.