-
Notifications
You must be signed in to change notification settings - Fork 25
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
git
andnpm
installed. - Run
git clone https://github.com/DesModder/DesModder
to download the latest commit - Navigate to the directory, then run
npm install
to install dependencies - Run
npm run build
to 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-atom
andatom-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.ts
for 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
.id
from 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 dev
in 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://extensions
and 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-username
and a filesrc/plugins/change-username/index.ts
with 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_plugins
near 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).