[
"./src/*.ts",
"./src/**/*.ts"
]
|
+|`exclude`| [
"./lib",
"./spec"
]
|
+
+### Git Ignore
+
+There are a few folders/files that should be added to the `.gitignore` file:
+
+```
+node_modules
+/lib
+.DS_Store
+```
+
+We ignore `node_modules` because it will include all your dependencies to build/run your library. `npm install` will sync this folder according to your `package.json` / `package-lock.json`.
+
+`/lib` because this directory will contain your built JS artefacts.
+
+`.DS_Store` is a common mac file that aids Finder, it doesn't need to be checked into the repository.
+
+TIP: Additional folders and files will be added depending on if you support iOS and/or Android.
+
+### NPM Ignore
+
+Similar to `.gitignore`, NPM accepts a `.npmignore` which can be used
+to ignore files while packing your distributable.
+
+Include anything that shouldn't be included in your distributable.
+
+```
+spec
+tsconfig.json
+```
+
+TIP: Additional folders and files will be added depending on if you support iOS and/or Android.
+
+### Directory Structure
+
+At this point, you're directory structure should look something like:
+
+```
+.
+├── node_modules/
+│ └── ...
+├── .gitignore
+├── .npmignore
+├── package.json
+├── package-lock.json
+└── tsconfig.json
+```
+
+Let's add a new directory `src` with the files `api.ts` and `EchoPlugin.ts`:
+
+```
+.
+├── node_modules/
+│ └── ...
+├── src/
+│ ├── api.ts
+│ └── EchoPlugin.ts
+├── .gitignore
+├── .npmignore
+├── package.json
+├── package-lock.json
+└── tsconfig.json
+```
+
+The `src` folder will be the directory that contains your source implementation files.
+
+We aren't ready to build yet, but when we are, a `lib` folder will appear containing the built JS.
+
+## EchoPlugin.ts
+
+Now let's implement our `EchoPlugin.ts` file.
+
+It will include a class that has a public API `echo`, which takes in a single `string` parameter, and uses the native API. The native API will respond back with the `string` in which we return back.
+
+NOTE: As a plugin guide that focuses purely on building a JS Module, this guide won't have a demonstratable code that can be ran.
+
+
+```typescript linenums="1" title="/src/EchoPlugin.ts"
+import {
+ FusePlugin,
+ ContentType,
+ FuseAPIResponse
+} from '@btfuse/core';
+
+export class EchoPlugin extends FusePlugin {
+ protected override _getID(): string {
+ return 'EchoPlugin';
+ }
+
+ public async echo(message: string): PromiseWarning
+This documentation is actively being developed and links may change.
+