-
Notifications
You must be signed in to change notification settings - Fork 42
Development
- Remove the existing extension to avoid conflict. If you plan to be editing DesModder, I suggest opening a separate Chrome profile so that you still have the stable extension in your main profile when you need it.
- Make sure you have
gitandnpminstalled. - Run
git clone https://github.com/DesModder/DesModderto download the latest commit - Navigate to the directory, then run
npm installto install dependencies - Run
npm run buildto build. - Load the unpacked extension in the
dist/folder through the directions at https://developer.chrome.com/docs/extensions/mv2/getstarted/#manifest (see "load unpacked")
First follow the instructions above in Setup.
- Make sure you have the prettier and Typescript packages installed for your editor.
- For Atom, these are
prettier-atomandatom-typescript - VS Code comes bundled with Typescript support. Its Prettier extension is called "Prettier - Code Formatter," and I suggest the settings
"editor.formatOnSave": true, "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }
- For Atom, these are
- Fork the DesModder repository to your GitHub account
- Repeat the Setup directions with your fork repository instead of the main GitHub repository
- Open your fork of the DesModder directory in your editor.
- Open the file
src/plugins.tsfor this example. - Find the line that starts
const _plugins = {, and add an extra newline after the opening brace. Prettier should automatically remove that unneeded newline on save. - Remove the
.idfrom the next line. Typescript should tell you "A computed property name must be of type 'string', 'number', 'symbol', or 'any'." - If both of these worked, then you are ready to start development. Run
npm run devin the DesModder directory to start the development server. You should get no errors. - You should have loaded the unpacked extension based on the instructions in "Setup." Check that it works by opening https://desmos.com/calculator.
- Back in
src/plugins.ts, delete one of the lines declaring a plugin, for example delete[duplicateHotkey.id]: duplicateHotkey, - Reload the extension by opening the URL
chrome://extensionsand clicking the reload extension button- As far as I know, this is only necessary if the manifest or other files changed, so it is not strictly necessary here, but it is a good habit to get into
- Refresh the Desmos page. The plugin should now be removed from the list.
In this section, we will create a plugin, which will simply change the displayed username in the top-right.
-
You should already have a fork of DesModder cloned to your computer
-
In the directory
src/plugins, add a new directory calledchange-usernameand a filesrc/plugins/change-username/index.tswith the following contents:function getHeaderElement() { return document.querySelector(".header-account-name") as HTMLElement | null; } let oldName = ""; function onEnable() { const headerElement = getHeaderElement(); if (headerElement === null) { return; } const text = headerElement.innerText; if (text !== undefined) { oldName = text; } headerElement.innerText = "DesModder ♥"; } function onDisable() { const headerElement = getHeaderElement(); if (headerElement === null) { return; } headerElement.innerText = oldName; } export default { id: "change-username", name: "Change Username", description: 'Change your username to "DesModder"', onEnable: onEnable, onDisable: onDisable, enabledByDefault: false, } as const;
-
Load the plugin: In
src/plugins/index.ts, addimport changeUsername from "plugins/change-username/index"near the top and[changeUsername.id]: changeUsername,in_pluginsnear the bottom of the file.- after reloading the extension (assuming you're running
npm run dev), a new plugin should appear in the list in desmos.com/calculator.
- after reloading the extension (assuming you're running
-
Commit the changes to your fork
git add .git commit -m "🎉 Add Plugin: Change Username"git push
-
For an actual plugin, you would do some more testing and eventually open a pull request on the repository.
I follow gitmoji.dev for commit emoji to add a bit of fun to committing (and of course it groups similar commits together, making it easier to understand what they do). There's even a VS code extension for it (vtrois.gitmoji-vscode).