[{"data":1,"prerenderedAt":5},["ShallowReactive",2],{"readme:opk-pm\u002FTsPkg":3},{"html":4},"\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fopk-pm\u002FTsPkg\u002Fmain\u002Fimages\u002Fts-pkg-icon.png\" alt=\"ts-pkg icon\" width=\"128\" height=\"128\" loading=\"lazy\">\u003Ch1>ts-pkg\u003C\u002Fh1>\n\u003Cp>✨ TypeScript-based \u003Ccode>package.json\u003C\u002Fcode> with magical features.\u003C\u002Fp>\n\u003Cp>Define your package configuration in TypeScript with type safety, auto-complete, and powerful features like automatic version resolution, script presets, config inheritance, and conditional configuration.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>IMPORTANT: It is imperative to read this page before using this package.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>Features\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Auto-resolve versions\u003C\u002Fstrong> – List package names, latest versions are fetched automatically\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Script presets\u003C\u002Fstrong> – Common scripts for TypeScript, React, testing, etc.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Config inheritance\u003C\u002Fstrong> – Extend from base configurations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Conditional config\u003C\u002Fstrong> – Different settings based on environment, CI, platform\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Full TypeScript\u003C\u002Fstrong> - Type-safe with autocomplete\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom fields\u003C\u002Fstrong> – Extra package.json fields are preserved in output\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Installation\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-bash\">bun add -D @a35hie\u002Fts-pkg\n# or\nnpm add -D @a35hie\u002Fts-pkg\n# or whatever you prefer\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Usage\u003C\u002Fh2>\n\u003Cp>Create a \u003Ccode>package.ts\u003C\u002Fcode> file:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { definePackage, BunPm } from '@a35hie\u002Fts-pkg'\n\nexport default definePackage({\n  pm: BunPm,\n  name: 'my-awesome-package',\n  version: '1.0.0',\n  description: 'An awesome package',\n  type: 'module',\n\n  \u002F\u002F ✨ Script presets - auto-generates common scripts\n  scriptPresets: ['typescript', 'testing', 'prettier'],\n\n  \u002F\u002F Add or override scripts\n  scripts: {\n    dev: 'tsx watch src\u002Findex.ts',\n  },\n\n  \u002F\u002F ✨ Just list packages - versions resolved automatically!\n  dependencies: [\n    'lodash', \u002F\u002F → \"lodash\": \"^4.17.23\"\n    'zod', \u002F\u002F → \"zod\": \"^4.3.6\"\n  ],\n\n  devDependencies: [\n    'typescript',\n    'vitest',\n    '@types\u002Flodash@^4', \u002F\u002F Can specify version constraints\n  ],\n\n  \u002F\u002F ✨ Conditional configuration\n  conditions: [\n    {\n      when: { env: 'production' },\n      set: { private: false },\n    },\n    {\n      when: { ci: true },\n      set: {\n        scripts: { test: 'vitest run --coverage' },\n      },\n    },\n  ],\n})\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Generate your \u003Ccode>package.json\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">ts-pkg\n# or\nts-pkg package.ts package.json\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Syncing Dependencies\u003C\u002Fh2>\n\u003Cp>When you install packages with \u003Ccode>bun add\u003C\u002Fcode> or \u003Ccode>npm install\u003C\u002Fcode>, sync them back to your config:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># After installing packages\nbun add lodash axios\nts-pkg sync\n\n# Or specify paths\nts-pkg sync package.ts package.json\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This keeps your \u003Ccode>package.ts\u003C\u002Fcode> as the source of truth while still allowing quick installs via your package manager.\u003C\u002Fp>\n\u003Ch2>Script Presets\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Preset\u003C\u002Fth>\n\u003Cth>Scripts\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>typescript\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>build\u003C\u002Fcode>, \u003Ccode>build:watch\u003C\u002Fcode>, \u003Ccode>typecheck\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>react\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>dev\u003C\u002Fcode>, \u003Ccode>build\u003C\u002Fcode>, \u003Ccode>preview\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>node\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>start\u003C\u002Fcode>, \u003Ccode>dev\u003C\u002Fcode>, \u003Ccode>build\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>testing\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>test\u003C\u002Fcode>, \u003Ccode>test:watch\u003C\u002Fcode>, \u003Ccode>test:coverage\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>prettier\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>format\u003C\u002Fcode>, \u003Ccode>format:check\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>eslint\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>lint\u003C\u002Fcode>, \u003Ccode>lint:fix\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch2>Config Inheritance\u003C\u002Fh2>\n\u003Cp>Extend from a base config:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">\u002F\u002F base.config.ts\nexport default definePackage({\n  pm: BunPm,\n  author: 'Your Name',\n  license: 'MIT',\n  scriptPresets: ['typescript', 'prettier'],\n  devDependencies: ['typescript', 'prettier'],\n})\n\n\u002F\u002F package.ts\nexport default definePackage({\n  pm: BunPm,\n  extends: '.\u002Fbase.config.ts',\n  name: 'my-package',\n  dependencies: ['lodash'],\n})\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Conditional Configuration\u003C\u002Fh2>\n\u003Cp>Apply different settings based on the environment:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">conditions: [\n  {\n    when: { env: 'production' },\n    set: { private: false },\n  },\n  {\n    when: { platform: 'win32' },\n    set: {\n      scripts: { build: 'tsc &amp;&amp; copy assets dist' },\n    },\n  },\n  {\n    when: { ci: true },\n    set: {\n      scripts: { test: 'vitest run --reporter=junit' },\n    },\n  },\n]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>API\u003C\u002Fh2>\n\u003Ch3>\u003Ccode>definePackage(config: PackageConfig): PackageConfig\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>Type-safe helper for defining your configuration.\u003C\u002Fp>\n\u003Ch3>\u003Ccode>createPackageJson(config: PackageConfig, options?): Promise&lt;string&gt;\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>Generate package.json content as a string.\u003C\u002Fp>\n\u003Ch3>\u003Ccode>writePackageJson(config: PackageConfig, options?): Promise&lt;void&gt;\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>Generate and write package.json to disk.\u003C\u002Fp>\n",1787323193650]