feat: gitignored src/userplugins directory (#112)
This commit is contained in:
parent
5a18292d92
commit
9d6021f0b9
4 changed files with 34 additions and 11 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -16,3 +16,5 @@ yarn-error.log*
|
|||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
*.tsbuildinfo
|
||||
|
||||
src/userplugins
|
||||
|
|
|
@ -26,6 +26,14 @@ pnpm buildWeb
|
|||
|
||||
You will find the built extension at dist/extension.zip. Now just install this extension in your Browser
|
||||
|
||||
## Installing Plugins
|
||||
|
||||
Vencord comes with a bunch of plugins out of the box!
|
||||
However, if you want to install your own ones, create a `userplugins` folder in the `src` directory and create or clone your plugins in there.
|
||||
Don't forget to rebuild!
|
||||
|
||||
Want to learn how to create your own plugin, and maybe PR it into Vencord? See the [Contributing](#contributing) section below!
|
||||
|
||||
## Contributing
|
||||
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) and [Megu's Plugin Guide!](docs/2_PLUGINS.md)
|
||||
|
|
|
@ -6,7 +6,9 @@ You don't need to run `pnpm build` every time you make a change. Instead, use `p
|
|||
|
||||
## Plugin Entrypoint
|
||||
|
||||
1. Create a folder in `src/plugins/` with the name of your plugin. For example, `src/plugins/epicPlugin/` - All of your plugin files will go here.
|
||||
> If it doesn't already exist, create a folder called `userplugins` in the `src` directory of this repo.
|
||||
|
||||
1. Create a folder in `src/userplugins/` with the name of your plugin. For example, `src/userplugins/epicPlugin/` - All of your plugin files will go here.
|
||||
|
||||
2. Create a file in that folder called `index.ts`
|
||||
|
||||
|
@ -20,7 +22,7 @@ export default definePlugin({
|
|||
description: "This plugin is absolutely epic",
|
||||
authors: [
|
||||
{
|
||||
id: "your discord user id goes here",
|
||||
id: 12345n,
|
||||
name: "Your Name",
|
||||
},
|
||||
],
|
||||
|
@ -33,6 +35,8 @@ export default definePlugin({
|
|||
|
||||
Change the name, description, and authors to your own information.
|
||||
|
||||
Replace `12345n` with your user ID ending in `n` (e.g., `545581357812678656n`). If you don't want to share your Discord account, use `0n` instead!
|
||||
|
||||
## How Plugins Work In Vencord
|
||||
|
||||
Vencord uses a different way of making mods than you're used to.
|
||||
|
@ -97,7 +101,9 @@ abc.isStaff = function () {
|
|||
|
||||
The match value _can_ be a string, rather than regex, however usually regex will be better suited, as it can work with unknown values, whereas strings must be exact matches.
|
||||
|
||||
Once you've made your plugin, make sure you run `pnpm lint` and make sure your code is nice and clean, and then open a PR on github :)
|
||||
Once you've made your plugin, make sure you run `pnpm test` and make sure your code is nice and clean!
|
||||
|
||||
If you want to publish your plugin into the Vencord repo, move your plugin from `src/userplugins` into the `src/plugins` folder and open a PR!
|
||||
|
||||
> **Warning**
|
||||
> Make sure you've read [CONTRIBUTING.md](../CONTRIBUTING.md) before opening a PR
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { execSync } from "child_process";
|
||||
import esbuild from "esbuild";
|
||||
import { existsSync } from "fs";
|
||||
import { readdir } from "fs/promises";
|
||||
|
||||
const watch = process.argv.includes("--watch");
|
||||
|
@ -41,21 +42,27 @@ export const globPlugins = {
|
|||
});
|
||||
|
||||
build.onLoad({ filter: /^plugins$/, namespace: "import-plugins" }, async () => {
|
||||
const files = await readdir("./src/plugins");
|
||||
const pluginDirs = ["plugins", "userplugins"];
|
||||
let code = "";
|
||||
let plugins = "\n";
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
if (files[i] === "index.ts") {
|
||||
let i = 0;
|
||||
for (const dir of pluginDirs) {
|
||||
if (!existsSync(`./src/${dir}`)) continue;
|
||||
const files = await readdir(`./src/${dir}`);
|
||||
for (const file of files) {
|
||||
if (file === "index.ts") {
|
||||
continue;
|
||||
}
|
||||
const mod = `p${i}`;
|
||||
code += `import ${mod} from "./${files[i].replace(/.tsx?$/, "")}";\n`;
|
||||
code += `import ${mod} from "./${dir}/${file.replace(/.tsx?$/, "")}";\n`;
|
||||
plugins += `[${mod}.name]:${mod},\n`;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
code += `export default {${plugins}};`;
|
||||
return {
|
||||
contents: code,
|
||||
resolveDir: "./src/plugins"
|
||||
resolveDir: "./src"
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue