{"id":13508630,"url":"https://github.com/falood/exsync","last_synced_at":"2025-04-12T21:29:29.601Z","repository":{"id":22758975,"uuid":"26104560","full_name":"falood/exsync","owner":"falood","description":"Yet another elixir reloader.","archived":false,"fork":false,"pushed_at":"2024-07-14T14:11:37.000Z","size":82,"stargazers_count":167,"open_issues_count":1,"forks_count":27,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-04T00:52:53.435Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/falood.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":"2014-11-03T05:03:17.000Z","updated_at":"2025-03-06T06:42:31.000Z","dependencies_parsed_at":"2022-08-21T11:00:46.144Z","dependency_job_id":"0cf10966-6d8d-468e-b55b-f0c0db0d0eda","html_url":"https://github.com/falood/exsync","commit_stats":{"total_commits":87,"total_committers":10,"mean_commits":8.7,"dds":"0.47126436781609193","last_synced_commit":"7cccf355980d1ccafdd5a9d4c58f78d27b58a42a"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falood%2Fexsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falood%2Fexsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falood%2Fexsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/falood%2Fexsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/falood","download_url":"https://codeload.github.com/falood/exsync/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248634415,"owners_count":21137039,"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":[],"created_at":"2024-08-01T02:00:55.886Z","updated_at":"2025-04-12T21:29:29.575Z","avatar_url":"https://github.com/falood.png","language":"Elixir","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"ExSync\n======\n\nAn Elixir reloader. When your code changes, ExSync automatically recompiles it.\n\nSupports recompiling `:path` dependencies without additional configuration. Also\nsupports a `:reload_callback` which is an MFA (Module Function Arguments) that\nwill be called after each time the code is recompiled.\n\n## System Support\n\nExSync depends on [FileSystem](https://github.com/falood/file_system) which has\nsome required dependencies.\n\n## Usage\n\n1. Create a new application:\n\n```bash\nmix new my_app\n```\n\n2. Add exsync to your `mix.exs` dependencies:\n\n```elixir\ndef deps do\n  [\n    {:exsync, \"~\u003e 0.4\", only: :dev},\n  ]\nend\n```\n\nNOTE: if you have an umbrella application then add ExSync to one the apps in the umbrella.\n\n## Config\n\nAll configuration for this library is handled via the application environment.\n\n`:addition_dirs` - Additional directories to monitor\n\nFor example, to monitor the `priv` directory, add this to your `config.exs`:\n\n```elixir\nconfig :exsync, addition_dirs: [\"/priv\"]\n```\n\n`:extensions` - List of file extensions to watch for changes. Defaults to: `[\".erl\", \".hrl\", \".ex\", \".eex\"]`\n\n`:extra_extensions` - List of additional extensions to watch for changes (cannot be used with `:extensions`)\n\nFor example, to watch `.js` and `.css` files add this to your `config.exs`:\n\n```elixir\nconfig :exsync, extra_extensions: [\".js\", \".css\"]\n```\n\n`:exclusions` - List of regular expressions that, if matched, exclude a file from being noticed by exsync.\n\nFor example, to exclude Emacs temporary files:\n\n```elixir\nconfig :exsync, exclusions: [~r/#/]\n```\n\n`:logging_enabled` - Set to false to disable logging (default true)\n\n`:reload_callback` - A callback [MFA](https://codereviewvideos.com/blog/what-is-mfa-in-elixir/) that is called when a set of files are done reloading. Can be used to implement your own special handling to react to file reloads.\n\n`:reload_timeout` - Amount of time to wait in milliseconds before triggering the `:reload_callback`. Defaults to 150ms.\n\nFor example, to call `MyApp.MyModule.handle_reload()` add this to your `config.exs`:\n\n```elixir\nconfig :exsync,\n  reload_timeout: 75,\n  reload_callback: {MyApp.MyModule, :handle_reload, []}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalood%2Fexsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffalood%2Fexsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalood%2Fexsync/lists"}