{"id":16179334,"url":"https://github.com/1111mp/lib-configuration-resolver","last_synced_at":"2025-04-07T11:43:40.591Z","repository":{"id":230228426,"uuid":"777557201","full_name":"1111mp/lib-configuration-resolver","owner":"1111mp","description":"Find and load configuration for your library 🌈","archived":false,"fork":false,"pushed_at":"2024-04-09T08:25:54.000Z","size":80,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T10:04:14.542Z","etag":null,"topics":["lib-configuration-resolver"],"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/1111mp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-03-26T04:24:45.000Z","updated_at":"2024-04-02T07:18:03.000Z","dependencies_parsed_at":"2024-04-09T09:49:38.818Z","dependency_job_id":null,"html_url":"https://github.com/1111mp/lib-configuration-resolver","commit_stats":null,"previous_names":["1111mp/lib-configuration-resolver"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1111mp%2Flib-configuration-resolver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1111mp%2Flib-configuration-resolver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1111mp%2Flib-configuration-resolver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1111mp%2Flib-configuration-resolver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1111mp","download_url":"https://codeload.github.com/1111mp/lib-configuration-resolver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648923,"owners_count":20972942,"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":["lib-configuration-resolver"],"created_at":"2024-10-10T05:27:12.680Z","updated_at":"2025-04-07T11:43:40.572Z","avatar_url":"https://github.com/1111mp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n\u003ca href=\"https://www.npmjs.com/package/lib-configuration-resolver\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/lib-configuration-resolver.svg\" alt=\"NPM Version\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/~the1111mp\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/npm/l/lib-configuration-resolver.svg\" alt=\"Package License\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/~the1111mp\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/lib-configuration-resolver.svg\" alt=\"NPM Downloads\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.npmjs.com/package/lib-configuration-resolver\" rel=\"nofollow\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/1111mp/lib-configuration-resolver\" alt=\"stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# lib-configuration-resolver\n\n`lib-configuration-resolver` searches for and loads configuration for your library. Inspired by [Vite](https://vitejs.dev/) but supports more file formats.\n\nBy default, `lib-configuration-resolver` will check the current working directory for the following:\n\n- JSON `*.json`\n- YAML `*.{yml|yaml}`\n- JavaScript `*.{js|mjs|cjs}`\n- TypeScript `*.{ts|mts|cts}`\n\nFor example, if your module's name is `\"resolver.config\"`, `lib-configuration-resolver` will try to load configuration data from these files:\n\n- `resolver.config.json`\n- `resolver.config.yml`, `resolver.config.yaml`\n- `resolver.config.js`, `resolver.config.mjs`, `resolver.config.cjs`\n- `resolver.config.ts`, `resolver.config.mts`, `resolver.config.cts`\n\nAlternatively you can change the search directory by passing `root`.\n\n## Installation\n\n```\nnpm install lib-configuration-resolver\n```\n\n## Quick Start\n\n#### Basic usage\n\nUse the `configResolver` api to automatically parse configuration files:\n\n```ts\n// resolver.config.ts\nexport default {\n  name: \"lib-configuration-resolver\",\n  desc: \"This is a template for testing lib-configuration-resolver\",\n  entry: [\"index.ts\"],\n  minify: true,\n  plugins: [() =\u003e {}]\n}\n```\n\n```ts\nimport { configResolver } from \"lib-configuration-resolver\"\n\ninterface Config {\n  name: string\n  desc: string\n  entry: string[]\n  minify: boolean\n  plugins: VoidFunction[]\n}\n\nconfigResolver\u003cConfig\u003e(\"resolver.config.ts\").then(config =\u003e {\n  // config: Config | null\n  console.log(config)\n  /**\n   * config: {\n      configFile: '/lib-configuration-resolver/resolver.config.ts',\n      config: {\n        name: 'lib-configuration-resolver',\n        desc: 'This is a template for testing lib-configuration-resolver',\n        entry: [ 'index.ts' ],\n        minify: true,\n        plugins: [ [Function (anonymous)] ]\n      },\n      dependencies: [ 'src/__tests__/configurations/resolver.config.ts' ]\n    }\n   */\n})\n```\n\nOr just provide file name:\n\n```ts\nconst config = await configResolver\u003cConfig\u003e(\"resolver.config\")\n// config: Config | null\nconsole.log(config)\n/**\n * config: {\n    configFile: '/lib-configuration-resolver/resolver.config.ts',\n    config: {\n      name: 'lib-configuration-resolver',\n      desc: 'This is a template for testing lib-configuration-resolver',\n      entry: [ 'index.ts' ],\n      minify: true,\n      plugins: [ [Function (anonymous)] ]\n    },\n    dependencies: [ 'src/__tests__/configurations/resolver.config.ts' ]\n  }\n */\n\nif (config === null) {\n  // no config file found.\n}\n```\n\nIt will try to search for the following files:\n\n```\n[\n  `resolver.config.json`,\n  `resolver.config.yml`,\n  `resolver.config.yaml`,\n  `resolver.config.js`,\n  `resolver.config.mjs`\n  `resolver.config.cjs`,\n  `resolver.config.ts`,\n  `resolver.config.mts`,\n  `resolver.config.cts`\n]\n```\n\n#### With `defineConfig` helper\n\nYou can use the defineConfig helper to export your configuration:\n\n```ts\n// resolver.config.ts\nimport { defineConfig } from \"lib-configuration-resolver\"\n\ninterface Config {\n  name: string\n  desc: string\n  entry: string[]\n  minify: boolean\n  plugins: VoidFunction[]\n}\n\nexport default defineConfig\u003cConfig\u003e(({ mode }) =\u003e {\n  console.log(mode)\n  // production or development\n  // the value of process.env.NODE_ENV\n\n  return {\n    name: \"lib-configuration-resolver\",\n    desc: \"This is a template for testing lib-configuration-resolver\",\n    entry: [\"index.ts\"],\n    minify: true,\n    plugins: [() =\u003e {}]\n  }\n})\n```\n\n```ts\nimport { configResolver } from \"lib-configuration-resolver\"\n\nconst config = await configResolver\u003cConfig\u003e(\"resolver.config\")\n// config: Config\nconsole.log(config)\n/**\n * config: {\n    configFile: '/lib-configuration-resolver/resolver.config.ts',\n    config: {\n      name: 'lib-configuration-resolver',\n      desc: 'This is a template for testing lib-configuration-resolver',\n      entry: [ 'index.ts' ],\n      minify: true,\n      plugins: [ [Function (anonymous)] ]\n    },\n    dependencies: [ 'src/__tests__/configurations/resolver.config.ts' ]\n  }\n */\n```\n\n#### Change search directory\n\nChange the directory where configuration files are searched by passing `root`:\n\n```ts\nimport { resolve } from \"node:path\"\nimport { configResolver } from \"lib-configuration-resolver\"\n\nconst config = await configResolver\u003cConfig\u003e(\"resolver.config\", {\n  root: resolve(process.cwd(), \"src\", \"__tests__\", \"configurations\")\n})\n// config: Config\nconsole.log(config)\n/**\n * config: {\n    configFile: '/lib-configuration-resolver/src/__tests__/configurations/resolver.config.ts',\n    config: {\n      name: 'lib-configuration-resolver',\n      desc: 'This is a template for testing lib-configuration-resolver',\n      entry: [ 'index.ts' ],\n      minify: true,\n      plugins: [ [Function (anonymous)] ]\n    },\n    dependencies: [ 'src/__tests__/configurations/resolver.config.ts' ]\n  }\n */\n```\n\n## API\n\n#### `configResolver`\n\n```ts\ntype Config = {\n  [key: string]: any\n}\n\ninterface InlineConfig extends Config {\n  /**\n   * Project root directory. Can be an absolute path, or a path relative from\n   * the location of the config file itself.\n   * @default process.cwd()\n   */\n  root?: string\n  /**\n   * Explicitly set a mode to run in. This will override the default mode.\n   */\n  mode?: string\n}\n\ntype ConfigResult\u003cT extends Config\u003e = {\n  configFile: string\n  config: T\n  dependencies: string[]\n}\n\ndeclare function configResolver\u003cT extends Config\u003e(\n  name: string,\n  inlineConfig?: InlineConfig,\n  defaultMode: string = \"development\"\n): Promise\u003cConfigResult\u003cT\u003e | null\u003e\n```\n\n#### `defineConfig`\n\n```ts\ninterface ConfigEnv {\n  mode: string\n}\n\ntype ConfigFnObject\u003cT\u003e = (env: ConfigEnv) =\u003e T\ntype ConfigFnPromise\u003cT\u003e = (env: ConfigEnv) =\u003e Promise\u003cT\u003e\ntype ConfigFn\u003cT\u003e = (env: ConfigEnv) =\u003e T | Promise\u003cT\u003e\ntype ConfigExport\u003cT extends Config\u003e = T | Promise\u003cT\u003e | ConfigFnObject\u003cT\u003e | ConfigFnPromise\u003cT\u003e | ConfigFn\u003cT\u003e\n\ndeclare function defineConfig\u003cT extends Config\u003e(config: ConfigExport\u003cT\u003e): ConfigExport\u003cT\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1111mp%2Flib-configuration-resolver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1111mp%2Flib-configuration-resolver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1111mp%2Flib-configuration-resolver/lists"}