A repository which houses several elements that are used by mutiple NodeCG based bundles for our layouts, esa-layouts for example.
This repository is purposefully designed for our use, and can have breaking changes without prior notice. We advise you don't directly use it in any projects.
- This repository is to be used as a submodule, directly in the root of the NodeCG bundle (usually in a directory named
shared
). - It requires the bundle to have some specific dependencies and structure; not going to note it all here because it's basically just the stuff from zoton2/nodecg-vue-ts-template which we tend to base bundles using.
- The bundle should have a
postinstall
in thepackage.json
file:-
"postinstall": "cd shared && node postinstall.js"
-
- You may want to add a
path
to yourtsconfig.*.json
files for ease of development:-
"paths": { "@shared/*": [ "shared/*" ], }
-
- To make sure the above part works, you will also want to add this line in your
extension/index.ts
file:-
require('module-alias').addAlias('@shared', require('path').join(__dirname, '../shared'));
-
- You will want to add these paths to your
tsconfig.browser.json
in theinclude
array:-
"include": [ // esa-layouts-shared "shared/browser_shared/**/*.ts", "shared/browser_shared/**/*.vue", "shared/dashboard/**/*.ts", "shared/dashboard/**/*.vue", "shared/graphics/**/*.ts", "shared/graphics/**/*.vue", "shared/types/**/*.d.ts" ]
-
- You will want to add this path to yoiur
tsconfig.extension.json
in theinclude
array:-
"include": [ `"shared/types/**/*.d.ts" ]
-
- You will want to add these to your
tsconfig.extension.json
asreferences
:-
"references": [ { "path": "./shared/extension/audio-normaliser" }, { "path": "./shared/extension/countdown" }, { "path": "./shared/extension/mediabox" }, { "path": "./shared/extension/music" }, { "path": "./shared/extension/obs" }, { "path": "./shared/extension/rabbitmq" }, { "path": "./shared/extension/video-player" }, { "path": "./shared/extension/x32" }, { "path": "./shared/extension/xkeys-esa" } ]
-
- You will want to add these entries in your
vetur.config.js
in theprojects
section:-
projects: [ // esa-layouts-shared { root: './shared/dashboard', package: '../../package.json', }, { root: './shared/graphics', package: '../../package.json', }, { root: './shared/browser_shared', package: '../../package.json', }, ]
-
- You will want to add this entry in your
.vscode/settings.json
file in theeslint.workingDirectories
section:-
"eslint.workingDirectories": [ "shared" ]
-
- You will want to change the Webpack
resolve.alias.vue
config to make sure it resolves to the one in the bundle:-
alias: { // vue: 'vue/dist/vue.esm.js', vue: path.resolve(__dirname, 'node_modules/vue/dist/vue.esm.js'), },
-