{"id":13625457,"url":"https://github.com/google/aside","last_synced_at":"2026-02-28T07:04:51.720Z","repository":{"id":147015144,"uuid":"616452371","full_name":"google/aside","owner":"google","description":"🚀 Apps Script development with formatting, linting, testing and more!","archived":false,"fork":false,"pushed_at":"2024-09-02T15:01:25.000Z","size":651,"stargazers_count":341,"open_issues_count":6,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-13T13:19:51.694Z","etag":null,"topics":["apps-script","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-20T12:21:47.000Z","updated_at":"2025-03-06T06:28:54.000Z","dependencies_parsed_at":"2024-06-24T13:01:44.153Z","dependency_job_id":"59351059-453f-43af-ad23-1961a4323686","html_url":"https://github.com/google/aside","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Faside","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Faside/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Faside/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Faside/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/aside/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248824681,"owners_count":21167345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apps-script","typescript"],"created_at":"2024-08-01T21:01:56.110Z","updated_at":"2026-02-28T07:04:51.688Z","avatar_url":"https://github.com/google.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003c!--\nCopyright 2023 Google LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n--\u003e\n\n# Apps Script in IDE (ASIDE)\n\n[![NPM Version](https://img.shields.io/npm/v/@google/aside)](https://www.npmjs.com/package/@google/aside)\n[![GitHub Action: CI](https://github.com/google/aside/actions/workflows/ci.yml/badge.svg)](https://github.com/google/aside/actions/workflows/ci.yml)\n[![Code Style: Google](https://img.shields.io/badge/code%20style-google-blueviolet.svg)](https://github.com/google/gts)\n\n## Overview\n\nApps Script in IDE (ASIDE) supports modern, robust and scalable Apps Script development by providing a framework for a local coding environment capable of formatting, linting, testing and much more.\n\nHere are the main features:\n\n- **TypeScript**\n\n  Write your code in TypeScript. It will be automatically compiled and bundled when deploying\n\n- **Formatting / Linting**\n\n  Leverage the power of ESLint and Prettier to enforce a unique coding style amongst collaborators\n\n- **Testing**\n\n  Use Jest to test your code before deploying\n\n- **Multiple Environments**\n\n  Seemlessly switch between `dev` and `prod` environments to push your code to\n\n## Getting Started\n\nThe simplest way to get started is:\n\n```\nnpx @google/aside init\n```\n\n## What it does\n\nAfter running the `init` command above, ASIDE will go ahead and do the following:\n\n- **Add configuration files**\n\n  E.g. for ESLint, Prettier, Jest, ...\n\n- **Set convenience scripts in package.json**\n\n  Those scripts include: `lint`, `build` and `deploy`, among others\n\n- **Install necessary dependencies**\n\n  Everything required for formatting, linting, testing, etc. will be installed automatically\n\n- **Set up clasp**\n\n  ASIDE is using [clasp](https://github.com/google/clasp) to pull and push code from and to Apps Script\n\n- **(Optionally) Create an Angular Material UI**\n\n  ASIDE will run the necessary commands to create an Angular application with Angular Material components, if the option is chosen\n\n## Options\n\nYou can provide the `init` command with some convenience options:\n\n- `--yes` / `-y`\n\n  Answer 'yes' to all prompts\n\n- `--no` / `-n`\n\n  Answer 'no' to all prompts\n\n- `--title`/ `-t`\n\n  Set project title without being asked for it\n\n- `--script-dev`\n\n  Set Script ID for dev environment without being asked for it\n\n- `--script-prod`\n\n  Set Script ID for production environment without being asked for it\n\n## Troubleshooting\n\n### Unknown token 'export'\n\nWhile bundling generally resolves all `export`s and `import`s it keeps `export`s in the entrypoint causing `clasp` to fail pushing. This can be an issue for example if you're trying to export functions from `index.ts` for testing.\n\nThe recommended approach is to use the entrypoint (`index.ts`) only to expose global functions to Apps Script while importing all business logic from separate modules.\n\n### Module not included in bundle\n\nBundling includes treeshaking of unused files to keep the bundle size as small as possible. If any of your modules contain only global functions with no import-path leading to the entrypoint (e.g. to be called from the menu), those would not be included in the bundle.\n\nTo avoid this, you can use a [side-effect import](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#import_a_module_for_its_side_effects_only).\n\n```ts\nimport './path/to/module';\n```\n\nThis will ensure that Rollup will not remove it from the bundle.\n\n## Disclaimer\n\nThis is not an officially supported Google product.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Faside","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Faside","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Faside/lists"}