Google TypeScript Style guide, formatter, linter, and code fixer with zero configuration required
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Project setup functionality for adding gts configuration, scripts, and dependencies to TypeScript projects.
Complete project initialization including scripts, dependencies, and configuration files.
/**
* Initialize gts in a TypeScript project
* @param options - Configuration options for initialization
* @returns Promise resolving to true on success
*/
function init(options: Options): Promise<boolean>;Usage Example:
import { init } from "gts/build/src/init";
import { Options } from "gts/build/src/cli";
const options: Options = {
dryRun: false, // Set to true to preview changes
gtsRootDir: "/path/to/gts/installation",
targetRootDir: process.cwd(),
yes: true, // Auto-confirm all prompts
no: false,
logger: console,
yarn: false // Use npm instead of yarn
};
const success = await init(options);Add npm scripts to package.json for common development tasks.
/**
* Add gts-related npm scripts to package.json
* @param packageJson - Parsed package.json object
* @param options - Configuration options
* @returns Promise resolving to true if scripts were added/modified
*/
function addScripts(
packageJson: PackageJSON,
options: Options
): Promise<boolean>;Scripts added:
lint: "gts lint" - Run lintingclean: "gts clean" - Clean build outputcompile: "tsc" - Compile TypeScriptfix: "gts fix" - Fix linting and formatting issuesprepare: "npm run compile" (or yarn run compile)pretest: "npm run compile" - Compile before testsposttest: "npm run lint" - Lint after testsUsage Example:
import { addScripts } from "gts/build/src/init";
import { readJsonp } from "gts/build/src/util";
const packageJson = await readJsonp("./package.json");
const scriptsAdded = await addScripts(packageJson, options);
if (scriptsAdded) {
console.log("Scripts were added or modified");
}Add required development dependencies to package.json.
/**
* Add gts development dependencies to package.json
* @param packageJson - Parsed package.json object
* @param options - Configuration options
* @returns Promise resolving to true if dependencies were added/modified
*/
function addDependencies(
packageJson: PackageJSON,
options: Options
): Promise<boolean>;Dependencies added:
gts: Current gts version (e.g., "^6.0.2")typescript: TypeScript version from gts dependencies@types/node: Node.js type definitionsUsage Example:
import { addDependencies } from "gts/build/src/init";
const depsAdded = await addDependencies(packageJson, options);Install default TypeScript template files in the src/ directory.
/**
* Install default TypeScript template files
* @param options - Configuration options
* @returns Promise resolving to true if template was installed
*/
function installDefaultTemplate(options: Options): Promise<boolean>;The template includes:
src/index.ts: Example TypeScript file with intentional style issuesUsage Example:
import { installDefaultTemplate } from "gts/build/src/init";
const templateInstalled = await installDefaultTemplate(options);Pre-defined configuration objects for ESLint setup.
const ESLINT_CONFIG: {
extends: string;
};
const ESLINT_IGNORE: string;Values:
ESLINT_CONFIG: { extends: './node_modules/gts/' }ESLINT_IGNORE: "build/\n"The initialization process creates several configuration files:
{
"extends": "./node_modules/gts/"
}build/{
"extends": "./node_modules/gts/tsconfig-google.json",
"compilerOptions": {
"rootDir": ".",
"outDir": "build"
},
"include": [
"src/**/*.ts",
"test/**/*.ts"
]
}module.exports = {
...require('gts/.prettierrc.json')
}root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
insert_final_newline = trueWhen options.yes and options.no are both false, the initialization process prompts for user confirmation:
Automatically detects and uses the appropriate package manager:
npm install --ignore-scripts after setup (or yarn install --ignore-scripts)yarn.lock exists and no package-lock.jsonpackage-lock.json existsoptions.yarnThe initialization process handles various error conditions:
Example with error handling:
import { init } from "gts/build/src/init";
try {
const success = await init(options);
if (!success) {
console.error("Initialization was cancelled or failed");
}
} catch (error) {
console.error("System error during initialization:", error.message);
}