{"id":23168898,"url":"https://github.com/toreda/typescript-cli-starter","last_synced_at":"2025-06-25T13:33:21.174Z","repository":{"id":135706770,"uuid":"408629086","full_name":"toreda/typescript-cli-starter","owner":"toreda","description":"Command Line App example and app project build template using TypeScript.","archived":false,"fork":false,"pushed_at":"2025-05-17T02:55:14.000Z","size":753,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-17T03:29:45.793Z","etag":null,"topics":["app","app-template","cli-app","cli-application","demo","eslint","gulp","javascript","jest","prettier","sample-app","sample-application","swc","typescript","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toreda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2021-09-20T23:24:48.000Z","updated_at":"2025-05-17T02:55:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"d65e2a8b-9820-4ef9-8142-175ea87f1457","html_url":"https://github.com/toreda/typescript-cli-starter","commit_stats":null,"previous_names":["toreda/typescript-cli-starter"],"tags_count":2,"template":true,"template_full_name":null,"purl":"pkg:github/toreda/typescript-cli-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toreda%2Ftypescript-cli-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toreda%2Ftypescript-cli-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toreda%2Ftypescript-cli-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toreda%2Ftypescript-cli-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toreda","download_url":"https://codeload.github.com/toreda/typescript-cli-starter/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toreda%2Ftypescript-cli-starter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261883165,"owners_count":23224446,"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":["app","app-template","cli-app","cli-application","demo","eslint","gulp","javascript","jest","prettier","sample-app","sample-application","swc","typescript","webpack"],"created_at":"2024-12-18T03:14:07.277Z","updated_at":"2025-06-25T13:33:21.156Z","avatar_url":"https://github.com/toreda.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Toreda](https://content.toreda.com/logo/toreda-logo.png)\n\n[![CI](https://img.shields.io/github/workflow/status/toreda/typescript-cli-starter/CI?style=for-the-badge)](https://github.com/toreda/typescript-cli-starter/actions) [![Coverage](https://img.shields.io/sonar/coverage/toreda_typescript-cli-starter?server=https%3A%2F%2Fsonarcloud.io\u0026style=for-the-badge)](https://sonarcloud.io/project/activity?graph=coverage\u0026id=toreda_typescript-cli-starter) [![Sonar Quality Gate](https://img.shields.io/sonar/quality_gate/toreda_typescript-cli-starter?server=https%3A%2F%2Fsonarcloud.io\u0026style=for-the-badge)](https://sonarcloud.io/dashboard?id=toreda_typescript-cli-starter)\n\n[![GitHub package.json version (branch)](https://img.shields.io/github/package-json/v/toreda/typescript-cli-starter/master?style=for-the-badge)](https://github.com/toreda/typescript-cli-starter/releases/latest) [![GitHub Release Date](https://img.shields.io/github/release-date/toreda/typescript-cli-starter?style=for-the-badge)](https://github.com/toreda/typescript-cli-starter/releases/latest) [![GitHub issues](https://img.shields.io/github/issues/toreda/typescript-cli-starter?style=for-the-badge)](https://github.com/toreda/typescript-cli-starter/issues)\n\n[![license](https://img.shields.io/github/license/toreda/typescript-cli-starter?style=for-the-badge)](https://github.com/toreda/typescript-cli-starter/blob/master/LICENSE)\n\n\u0026nbsp;\n\n# `@toreda/typescript-cli-starter`\n## Command line (CLI) app template\nCommand Line Interface (CLI) app example using TypeScript. Produces a self-contained bundle file which can be installed and execute via command line.\n\n\u0026nbsp;\n\n# Template Features\n- Unit tests with Jest.\n-  TypeScript adds additional syntax to JavaScript to support a tighter integration with your editor. Catch errors early in your editor.\n-  TypeScript understands JavaScript and uses type inference to give you great tooling without additional code.\n\n\u0026nbsp;\n\n## [Speedy Web Compiler (SWC)](https://swc.rs/)\n*WC is an extensible Rust-based platform for the next generation of fast developer tools. It's used by tools like Next.js, Parcel, and Deno, as well as companies like Vercel, ByteDance, Tencent, Shopify, and more.*\n\n### Features\n- Fast\n  - SWC is 20x faster than Babel on a single thread and 70x faster on four cores.\n\n\n\u0026nbsp;\n\n## [Gulp](https://gulpjs.com/)\n*A toolkit to automate \u0026 enhance your workflow*\n\n### Features\n-   Flexible\n    -   Using code over configuration, utilize all of JavaScript to create your gulpfile—where tasks can be written using your own code or chained single purpose plugins.\n- Composable\n  - Write individual, focused tasks and compose them into larger operations, providing you with speed and accuracy while reducing repetition.\n- Efficient\n  - By using gulp streams, you can apply many transformations to your files while in memory before anything is written to the disk—significantly speeding up your build process.\n\n\n\u0026nbsp;\n\n## [ESLint](https://eslint.org/)\n*Find and fix problems in your JavaScript code*\n\nLeverage gulp and the flexibility of JavaScript to automate slow, repetitive workflows and compose them into efficient build pipelines.\n\n### Features\n- Find Problems\n  - ESLint statically analyzes your code to quickly find problems. ESLint is built into most text editors and you can run ESLint as part of your continuous integration pipeline.\n- Fix Automatically\n  - Many problems ESLint finds can be automatically fixed. ESLint fixes are syntax-aware so you won't experience errors introduced by traditional find-and-replace algorithms.\n\n\u0026nbsp;\n\n## [Jest](https://jestjs.io/)\n*Jest is a delightful JavaScript Testing Framework with a focus on simplicity.*.\n\n### Features\n- Zero Config\n  - Jest aims to work out of the box, config free, on most JavaScript projects.\n- Isolated\n  - Tests are parallelized by running them in their own processes to maximize performance.\n- Snapshots\n  - Make tests which keep track of large objects with ease. Snapshots live either alongside your tests, or embedded inline.\n- Great API\n  - From it to expect - Jest has the entire toolkit in one place. Well documented, well maintained, well good.\n\n\u0026nbsp;\n\n## [Webpack](https://webpack.js.org/)\n*Static module bundler for modern JavaScript applications.*\n\n### Features\n- Self Contained Bundles\n\n\u0026nbsp;\n\n# Yarn\n\nWe recommend `yarn` to manage project packages. Although you can use `npm install` to add packages, pick either `yarn` or `npm` to install/manage packages, and use only that command.\n\n**Why choose one?**\n**`yarn`** creates `yarn.lock` at the project root, while **`npm`** creates `package-lock.json`. These files separately and independently track specific package versions manages specific package versions. If both files exist, package versions in the project will be inconsistent.\n\n# Package Data (`package.json`)\n\n## Vulnerabilities\n\n### *What are resolutions?*\n\nYarn `resolutions` allow per-package version overrides. All dependencies use the specified package version.\n\n### *Why are there packages in the `resolutions` field?*\n\nThe `resolutions` section includes several packages flagged by Github as security vulnerabilities.\n\n\n\u0026nbsp;\n# `dependencies` (`package.json`)\n\n## [`@toreda/log`](https://www.npmjs.com/package/@toreda/log)\n\nTypeScript logger with small footprint \u0026 configurable transports.\n\n### Uses\n-   `gulpfile.ts`\n-   `@toreda/build-tools`\n-   `@toreda/strong-types`\n\n---\n\n## [`yargs`](https://www.npmjs.com/package/yargs)\n\nParse command-line arguments.\n\n\u0026nbsp;\n# `devDependencies` (`package.json`)\n\nPackages used only during development should be placed in`devDependencies`.\n\nInstall packages with the `--dev` flag with yarn or the `--save-dev` flag with NPM to install a package directly into `devDependencies`.\n\n**With yarn:**\n\n```bash\nyarn install @toreda/types --dev\n```\n\n**With NPM**\n\n```bash\nnpm install @toreda/types --save-dev\n```\n\n---\n\n## [`@swc/core`](https://www.npmjs.com/package/@swc/core)\n\nCore package for the SWC (Speedy Web Compiler). The super-fast TypeScript \u0026 JavaScript compiler written in Rust. Significantly\n\n### Uses\n\n-   `gulpfile.ts`\n-   All `.spec.ts` test files where babel was previously used.\n\n---\n\n## [`@swc/jest`](https://www.npmjs.com/package/@swc/jest)\n\nSWC Plugin enabling Jest to use SWC to transform files instead of Babel.\n\n### Uses\n\n-   Anytime `yarn test` is run.\n-   Used as `transform` in `jest.config.js`.\n-   All `.spec.ts` test files where babel was previously used.\n\n## [`eslint`](https://www.npmjs.com/package/eslint)\n\nJavaScript \u0026 TypeScript linter which flags inconsistent formatting and styles.\n\n### Uses\n\n-   **`gulpfile.ts`**\n-   Running command **`yarn lint`** or **`yarn eslint`**\n\n---\n\n## [`eslint-config-prettier`](https://www.npmjs.com/package/eslint-config-prettier)\n\nTurns off all rules that are unnecessary or might conflict with [Prettier].\n\n### Uses\n\n-   `gulpfile.ts`\n-   Running command `yarn lint` or `yarn eslint`\n\n---\n\n## [`eslint-plugin-prettier`](https://www.npmjs.com/package/eslint-plugin-prettier)\n\nRuns Prettier as an ESLint rule and reports differences as individual ESLint issues.\n\n### Uses\n\n-   **`gulpfile.ts`**\n-   Running command **`yarn lint`** or **`yarn eslint`**\n\n---\n\n## [`fork-ts-checker-webpack-plugin`](https://www.npmjs.com/package/fork-ts-checker-webpack-plugin)\n\nSpeeds up TypeScript type checking and `ESLint` linting (by moving each to a separate process)\n\n### Uses\n\n-   `gulpfile.ts`\n-   `webpack.config.ts`\n\n---\n\n## [`gulp`](https://www.npmjs.com/package/gulp)\n\nStreaming task-based build system.\n\n### Uses\n\n-   **`gulpfile.ts`**\n-   Running command **`yarn build`** or **`yarn gulp`**\n\n---\n\n## [`@toreda/build-tools`](https://www.npmjs.com/package/@toreda/build-tools)\n\nBuild scripts and Gulp pipelines for TypeScript project. Capable of building NPM packages, libraries, and command line apps. Acts as a Gulp wrapper, providing a single consistent build pipeline used by **`@toreda`** NPM projects.\n\n_Note: While this package can make your life easier it's not required for this package, but it's used in the default setup._\n\n### Uses\n\n-   **`gulpfile.ts`**\n\n---\n\n## [`@toreda/eslint-config`](https://www.npmjs.com/package/@toreda/eslint-config)\n\nToreda's TypeScript ESLint configuration and ruleset for ESLint.\n\nWhile standard for Toreda TypeScript projects, you can define any ruleset you'd like.\n\n**Change Toreda Ruleset**\nEdit `.eslintrc.js` and remove `extends`, or change the `extends` value to change the ESLint ruleset used.\n\n```json\nextends: ['@toreda/eslint-config'],\n```\n\n**Override Individual Rules**\nAdd Individual rules to `rules: {...}` in `.eslintrc.js` to change the behavior of that rule only. The rule value set overrides both the default value and the Toreda value for that rule.\n\n### Uses\n\n-   `package.json`\n\n---\n\n## [`@toreda/prettier-config`](https://www.npmjs.com/package/@toreda/prettier-config)\n\nRuleset config to enforce Toreda's organization-wide formatting standard. Any prettier ruleset can be used in your project and this is not required for your own projects.\n\nIf you removed also remove this key from `package.json`:\n\n```json\n  \"prettier\": \"@toreda/prettier-config\",\n```\n\n### Uses\n\n-   `package.json`\n\n---\n\n## [`@toreda/types`](https://www.npmjs.com/package/@toreda/types)\n\nBasic and common type definitions used in `@toreda` projects.\n\n### Use\n\n-   `@toreda/build-tools`\n\n---\n\n## [`@types/gulp`](https://www.npmjs.com/package/@types/gulp)\n\nType definitions for Gulp.\n\n### Uses\n\n-   `gulpfile.ts`\n\n---\n\n## [`@types/node`](https://www.npmjs.com/package/@types/node)\n\nType definitions for Node functions.\n\n### Uses\n\n-   Helpful types on import in any project `.ts` file.\n\n---\n\n## [`@types/webpack`](https://www.npmjs.com/package/@types/webpack)\n\nType definitions for **`webpack`**. Package version generally always match the **`webpack`** package version to eliminate bugs and API discrepancies.\n\n### Uses\n\n-   **`webpack.config.ts`**\n\n---\n\n## [`@types/webpack-node-externals`](https://www.npmjs.com/package/@types/webpack-node-externals)\n\nType definitions for the **`webpack-node-externals`** webpack plugin. Provides typescript type hints for plugin configuration types.\n\n### Uses\n\n-   **`webpack.config.ts`**\n\n---\n\n## [`@types/yargs`](https://www.npmjs.com/package/@types/yargs)\n\nAdds type support for **`yargs`** function calls.\n\nIf you encounter build errors after installing `@types/yargs` it likely means code somewhere in the project did not respect `yargs` types.\n\nEach package export without type definitions becomes an implicit `any` type. This behavior mimics vanilla JavaScript and effectively disables type checking (this is bad).\n\n### Uses\n\n-   **`src/cli.ts`**\n\n---\n\n## [`webpack`](https://www.npmjs.com/package/webpack)\n\nType definitions for **`webpack`**.\n\n### Uses\n\n-   **`webpack.config.ts`**\n\n---\n\n## [`webpack-node-externals`](https://www.npmjs.com/package/webpack-node-externals)\n\nAdds support for defining external packages to use during build that are not included in bundle. Extremely useful when deploying bundles to platforms with libraries available. For example, AWS Lambda functions require `aws-sdk` during build and development, but the Lambda run-time environment makes `aws-sdk` to all Lambda functions. Using `webpack-node-externals` makes it easy to rely on `aws-sdk` during the build without adding redundant and unused code to the final bundle.\n\n_Excluding run-time packages is different than excluding devDependencies which may only used during build \u0026 bundling._\n\n### Uses\n\n-   **`webpack.config.ts`**\n\n---\n\n## [`jest`](https://www.npmjs.com/package/jest)\n\nIntuitive testing framework with integrated code coverage and report formatting.\n\n**Why include this package?**\nJest is included in the project's **`package.json`** as a **`devDependency`**, rather than relying on the jest command being available for a couple important reasons.\n\nUsing Jest from **`package.json`** has a few benefits:\n\n-   Package guaranteed available. No guessing whether it's installed or what version is installed.\n-   The project controls the jest version.\n-   TypeScript often requires additional types or packages to work with popular NPM packages. Jest + TypeScript currently needs **`ts-node`** and **`@types/jest`** (among others). Keeping package versions \u0026 package updates synchronized is tough task without surprise updates breaking testing.\n\n### Uses\n\n-   All **`.spec.ts`** test files in **`./tests`**.\n\n### Docs\n\n-   [Getting Started with Jest](https://jestjs.io/docs/getting-started)\n\n---\n\n## [`jest-sonar-reporter`](https://www.npmjs.com/package/jest-sonar-reporter)\n\nIntuitive testing framework with integrated code coverage and report formatting.\n\n**Why include this package?**\nProcesses jest execution results and sends to a SonarQube instance. Target SonarQube server details set in `sonar-project.properties`\n\n### Uses\n\n-   All **`.spec.ts`** test files in **`./tests`**.\n\n### Docs\n\n-   [Getting Started with Jest](https://jestjs.io/docs/getting-started)\n-   [jest-sonar-reporter Github](https://github.com/3dmind/jest-sonar-reporter)\n\n---\n\n## [`terser-webpack-plugin`](https://www.npmjs.com/package/terser-webpack-plugin)\n\nUglify replacement focused on better speed and better performance.\n\n### Uses\n\n-   All **`.spec.ts`** files in **`tests/`**\n\n---\n\n## [`ts-node`](https://www.npmjs.com/package/ts-node)\n\nRun node scripts directly from the command line without transpiling.\n\n### Docs\n\n-   [Configuring TS Node](https://typestrong.org/ts-node/docs/configuration/)\n-   [How to run TypeScript Scripts with ts-node](https://www.digitalocean.com/community/tutorials/typescript-running-typescript-ts-node)\n\n---\n\n## [`typescript`](https://www.npmjs.com/package/typescript)\n\nTypeScript package support with `tsconfig.json`.\n\n### Uses\n\n-   Running `yarn build`\n-   Running `webpack`.\n-   Using `ts-loader`\n\n\u0026nbsp;\n\n# Client Lifecycle\nLifecycle methods are like checkpoints that execute logic at each step in the client's lifecycle flow.\n\n## `Init Phase`\nInit\n\nThe async init methods are called in the following order:\n### 1. `clientWillInit`\n### 2. `clientOnInit`\n### 3. `clientDidInit`\n\n## `Load Phase`\n\n\n\n# Legal\n\n## License\n[MIT](LICENSE) \u0026copy; Toreda, Inc.\n\n\u0026nbsp;\n## Copyright\nCopyright \u0026copy; 2019 - 2025 Toreda, Inc. All Rights Reserved.\n\n\n\u0026nbsp;\n# Website\nVisit Toreda's official company website at [www.toreda.com](https://www.toreda.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoreda%2Ftypescript-cli-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoreda%2Ftypescript-cli-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoreda%2Ftypescript-cli-starter/lists"}