{"id":18224920,"url":"https://github.com/iamsebastiandev/byndly","last_synced_at":"2026-02-18T19:02:16.636Z","repository":{"id":44407679,"uuid":"512277314","full_name":"IamSebastianDev/byndly","owner":"IamSebastianDev","description":"Byndly is a zero-config, minimal \u0026 dependency free development server with change detection.","archived":false,"fork":false,"pushed_at":"2025-03-01T18:56:19.000Z","size":1205,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-21T00:28:11.526Z","etag":null,"topics":["development-environment","development-tools","filewatcher","node","nodejs","server"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IamSebastianDev.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"license.md","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":"2022-07-09T20:15:35.000Z","updated_at":"2024-12-03T17:55:49.000Z","dependencies_parsed_at":"2023-09-26T22:42:40.253Z","dependency_job_id":"22ff68d4-30dd-49d9-bda1-abe298b21264","html_url":"https://github.com/IamSebastianDev/byndly","commit_stats":{"total_commits":67,"total_committers":3,"mean_commits":"22.333333333333332","dds":"0.22388059701492535","last_synced_commit":"410c8d052e680c913916bf0fd75db2fb00dad0b4"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/IamSebastianDev/byndly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamSebastianDev%2Fbyndly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamSebastianDev%2Fbyndly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamSebastianDev%2Fbyndly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamSebastianDev%2Fbyndly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IamSebastianDev","download_url":"https://codeload.github.com/IamSebastianDev/byndly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamSebastianDev%2Fbyndly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29590684,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T18:54:29.675Z","status":"ssl_error","status_checked_at":"2026-02-18T18:50:50.517Z","response_time":162,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["development-environment","development-tools","filewatcher","node","nodejs","server"],"created_at":"2024-11-04T02:05:20.664Z","updated_at":"2026-02-18T19:02:11.616Z","avatar_url":"https://github.com/IamSebastianDev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- @format --\u003e\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://repository-images.githubusercontent.com/512277314/4c07bbca-bf4c-46d7-bddf-a271ab02968f\" alt=\"logo\"/\u003e\n\u003c/p\u003e\n\n# Byndly\n\nByndly is a modern, zero-config, dependency-free development server, featuring hot-reloading and change detection. It is NOT a bundler or HMR. It is meant to simplify development of packages used in a browser environment, where setting up a server/test-site without relevance for the release would pollute the repository or package.\n\n## Installation \u0026 Usage\n\n### With local installation\n\nInstall Byndly via NPM or Yarn. Make sure to add it as development dependency, to not introduce unwanted dependencies into your own package.\n\n```bash\n # will install byndly as devDependency\n $ yarn add byndly -D\n\n # will install byndly as devDependency\n $ npm i byndly -D\n```\n\nUse Byndly with your CLI or as script inside your package.json file.\n\n```bash\n# create a minimal server serving the chosen bundle.\n$ byndly\n```\n\n```jsonc\n// package.json\n{\n    \"scripts\": {\n        \"serve\": \"byndly,\n    },\n}\n```\n\n\u003e Note: Byndly is setup to run without any configuration if desired, and will serve the 'main' or 'module' field as bundle if not otherwise instructed.\n\nBy default, Byndly will include your script as a normal JS file, meaning it should be bundled in a way that makes it globally accessible. You can change this behaviour using the [configuration options](#configuration) below.\n\n### Without local installation\n\nYou can also run Byndly directly without installing it. This can be useful for quick prototyping or similar, minimal setups. The only difference between installing and directly executing is the actual installation. All other aspects stay the same.\n\n```bash\n # run Byndly without installation\n $ npx byndly\n```\n\n## Configuration\n\nWhile Byndly works well without configuration, setting up a config file or passing extended configuration as arguments when calling Byndly can make it easier to customize your developer experience, or to fit into different development environments.\n\n### Configuration files\n\nBesides configuring Byndly using CLI arguments, you can also use a configuration file. Byndly will automatically detect config files inside the root directory, or a distinct `config` or `.config` directory. Config files need to be called `byndly`, `byndly.config` or `byndlyrc`. Available extensions are `js`, `mjs` or `json`.\n\nIf you prefer another naming conventions or want to be more specific, you can pass the location of your config file to the CLI using the `--c` or `--config` flag.\n\n```bash\n # Load the config file at the specified path\n $ byndly --c ./byndly.configFile.js\n```\n\nIf your config file is a `.js` or `.mjs` file, it needs to have a default export containing the config properties. This is best done using the `defineConfig` function, exposed by the `byndly` package. Using the function will give you autocomplete and type-safety.\n\n```js\n// ES6 style default export\nimport { defineConfig } from 'byndly';\n\nexport default defineConfig({\n    //...config\n});\n\n// Node style module.export\nconst { defineConfig } = require('byndly');\n\nmodule.export = defineConfig({\n    //...config\n});\n```\n\nUsing JSON is also possible, however you will not be able to define a bootstrap function.\n\n### Creating a configuration file\n\nByndly has a special init flag that let's you create a pre scaffold configuration file easily. By default, it will create a `byndly.config.mjs` file in the root of your project. You can specify the path with the `--c` or `--config` flag.\n\n```bash\n# create a config file in the root of your project\n$ byndly init\n\n# create a config file in the specified location\n$ byndly init --c .config/byndly.config.mjs\n```\n\n### Configuration properties\n\n#### **`bundle`**\n\nType: `string`  \nCLI: `--b/--bundle/bundle= \u003cstring\u003e`\n\nThis is the path to the bundle served by Byndly. Can be set via the `--b` or `--bundle` flag as well as with the `bundle` property in a byndly config file. Defaults to the `main` field of your `package.json`, or if the `\"type\": \"module\"` property is set, to the `module` field of the `package.json`.\n\n#### **`module`**\n\nType: `boolean`  \nCLI: `-m/-module`\n\nFlag indicating if the bundle is a ES6 module and needs to be imported to use with the bootstrap function. Can be set via the `-m` or `-module` short flag indicating a true boolean as well as with the `module` property in a byndly config file. Defaults to whatever value is set to the `type` field in the `package.json`.\n\n#### **`bootstrap`**\n\nType: `(exports: Record\u003cstring, unknown) =\u003e void`  \nCLI: `/`\n\nBootstrap function inserted into the DOM. Can be used to create initial code or setup/influence your frontend test environment. Necessary with ES6 modules, as exports will not be added to the global scope. Can be omitted, if your bundle is added to the global scope or executed by itself.\n\n```js\n// byndly.config.mjs\n\nconst bootstrap = (exports) =\u003e {\n    // 'exports' contains the exports from your bundled code.\n    console.log(exports.ExportedClass);\n    // will log the class exported by your bundle.\n};\n\n// you can also use destructuring to directly access the exports as argument.\nconst bootstrap = ({ ExportedClass }) =\u003e {\n    const created = new ExportedClass();\n};\n```\n\nYou can also use a bootstrap function without a ES6 module. In that case, no arguments will be passed to the function and it will simply be setup to execute automatically when the code is loaded.\n\n```js\n// byndly.config.mjs\n\nconst bootstrap = () =\u003e {\n    console.log('loaded');\n    // 'loaded'\n};\n```\n\n\u003e Note: The bootstrap function cannot be defined in the CLI. To use it, you need to create a `.js` or `.mjs` configuration file.\n\n#### **`watch`**\n\nType: `boolean`  \nCLI: `-w/--watch`\n\nFlag indicating if the browser should reload when changes in the supplied bundle file are detected. Can be set via the `-w` or `-watch` short flag indicating a true boolean as well as with the `watch` property in a byndly config file. Defaults to true.\n\n#### **`port`**\n\nType: `string | number`  \nCLI: `--p/--port/port=\u003cport\u003e`\n\nProperty to determine the port used by the Byndly server. Can be set via the `--p` or `--port` long flag followed by a string as well as with the `port` property in a byndly config file. Defaults to `31415`. (🥧)\n\n#### **`host`**\n\nType: `string`  \nCLI: `--h/--host/host=\u003chost\u003e`\n\nProperty to determine the host used by the Byndly server. Can be set via the `--h` or `--host` long flag followed by a string as well as with the `host` property in a byndly config file. Defaults to `127.0.0.1`. (localhost)\n\n#### **`name`**\n\nType: `string`  \nCLI: `--n/--name/name=\u003cname\u003e`\n\nProperty to determine the name used by the Byndly server displayed in the title bar. Can be set via the `--n` or `--name` long flag followed by a string as well as with the `name` property in a byndly config file. Defaults to the name of your package defined in the `package.json`.\n\n#### **`quiet`**\n\nType: `boolean`  \nCLI: `-q/-quiet`\n\nFlag indicating if Byndly should suppress all console messages. Can be set via the `-q` or `-quiet` short flag indicating a true boolean as well as with the `quiet` property in a byndly config file. Defaults to false.\n\n#### **`verbose`**\n\nType: `boolean`  \nCLI: `-v/-verbose`\n\nFlag indicating if Byndly should log additional console messages consisting of HTTP requests and reloading events. Can be set via the `-v` or `-verbose` short flag indicating a true boolean as well as with the `verbose` property in a byndly config file. Defaults to false.\n\n#### **`include`**\n\nType: `string[]`  \nCLI: `/`\n\nArray of strings indicating files that should be included client side. The property cannot be set in the CLI and needs to be set in a config file. Accepts `.js`, `.mjs` and `.css` files. `.js` files will be included as simple `script`, `.mjs` files will be included as script `type=\"module\"`.\n\n```js\n// byndly.config.mjs\nexport default {\n    // ...\n    include: ['./dist/main.css', './dist/externalLibrary.js'],\n};\n\n// the css file will be included as stylesheet client side, the js file will be included as script.\n```\n\n#### **`template`**\n\nType: `string`  \nCLI: `--t/--template/--template=\u003cpath\u003e`\n\nA optional string indicating a path to a HTML file or a html string, that will be inserted into the body of the created template. This can be used to quickly setup a DOM testing suite or elements needed to test or work on the library.\n\n#### **`open`**\n\ntype `boolean`\nCLI: `--open`\n\nA optional CLI only argument that can be appended to attempt to open the default browser.\n\n## Contributing\n\nIf you would like to contribute, take a look at the [contribution guide](./contributing.md).\n\n## License\n\nByndly is licensed under the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamsebastiandev%2Fbyndly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamsebastiandev%2Fbyndly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamsebastiandev%2Fbyndly/lists"}