New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@savvy-web/templates

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@savvy-web/templates

Pure TypeScript templates for Silk Suite project scaffolding

latest
Source
npmnpm
Version
0.1.0
Version published
Maintainers
1
Created
Source

@savvy-web/templates

npm version License: MIT

Pure TypeScript templates for Silk Suite project scaffolding. Each template takes typed options (validated with Effect Schema) and returns TemplateEntry[] -- a list of { name, filename, content } records. No filesystem calls; you decide where and how to write the output.

Features

  • Generate config files for package.json, tsconfig, Biome, Turborepo, pnpm, changesets, VS Code, gitignore, and README
  • Validate all inputs at runtime with Effect Schema
  • Compose an entire workspace scaffold from a single createWorkspace call
  • Zero side effects -- templates return plain strings, never touch disk

Installation

pnpm add @savvy-web/templates effect

effect is a peer dependency.

Quick Start

import { createPackageJson } from "@savvy-web/templates";

const entries = createPackageJson({
  name: "@my-org/my-lib",
  description: "A useful library",
  type: "module",
  license: "MIT",
  exports: { ".": "./src/index.ts" },
});

for (const entry of entries) {
  console.log(entry.filename); // "package.json"
  console.log(entry.content);  // sorted, formatted JSON
}

API

Every create* function accepts an options object (or unknown -- Schema validates at runtime) and returns TemplateEntry[].

TemplateEntry

interface TemplateEntry {
  readonly name: string;     // logical name, e.g. "tsconfig"
  readonly filename: string; // suggested path, e.g. "tsconfig.json"
  readonly content: string;  // generated file content
}

Templates

FunctionOutput fileKey options
createPackageJsonpackage.jsonname, version, type, exports, scripts, dependencies, engines, publishConfig
createTsConfigtsconfig.jsonextends, composite, include, exclude, references
createBiomebiome.jsoncversion, extends, root
createTurboRootturbo.jsontasks, globalDependencies, globalEnv, ui, concurrency
createTurboWorkspaceturbo.jsontasks (extends root with ["//"])
createPnpmWorkspacepnpm-workspace.yamlpackages, autoInstallPeers, catalogMode, catalog
createChangeset.changeset/config.jsonaccess, baseBranch, changelog, repo
createVsCode.vscode/settings.json, .vscode/extensions.jsonsettings (biome, turbo, vitest), extensions
createGitignore.gitignoresections (node, build, env, os, silk), additional
createReadmeREADME.mdname, description

Workspace Compositor

createWorkspace composes multiple templates into a full monorepo scaffold:

import { createWorkspace } from "@savvy-web/templates";

const entries = createWorkspace({
  name: "my-monorepo",
  packageManager: "pnpm",
  packageManagerVersion: "10.33.0",
  nodeVersion: "24.11.0",
  features: {
    biome: true,
    turbo: true,
    changesets: true,
    vscode: true,
    vitest: true,
  },
});

// entries contains: package.json, tsconfig.json, .gitignore, README.md,
// pnpm-workspace.yaml, biome.jsonc, turbo.json, .changeset/config.json,
// .vscode/settings.json, .vscode/extensions.json

Each feature flag is optional and defaults to false. The compositor always generates package.json, tsconfig.json, .gitignore, and README.md. pnpm-workspace.yaml is added automatically when packageManager is "pnpm".

License

MIT

FAQs

Package last updated on 31 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts