{"id":14449568,"url":"https://github.com/ellraiser/love-build","last_synced_at":"2025-10-11T16:32:14.195Z","repository":{"id":212546237,"uuid":"731758681","full_name":"ellraiser/love-build","owner":"ellraiser","description":"zero-dependency cross-platform builder for LÖVE to export games to Windows, MacOS, and Linux","archived":false,"fork":false,"pushed_at":"2025-02-03T21:02:48.000Z","size":563,"stargazers_count":42,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T08:12:42.657Z","etag":null,"topics":["build-tools","love","love2d","lua"],"latest_commit_sha":null,"homepage":"https://love2d.org","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ellraiser.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-12-14T20:11:10.000Z","updated_at":"2025-04-08T14:45:32.000Z","dependencies_parsed_at":"2023-12-14T21:27:53.598Z","dependency_job_id":"c5c273e2-42e2-4b74-8b3e-39b7838b7c51","html_url":"https://github.com/ellraiser/love-build","commit_stats":{"total_commits":141,"total_committers":4,"mean_commits":35.25,"dds":0.08510638297872342,"last_synced_commit":"9bee82238abf63d957bf58970e854ca872284b41"},"previous_names":["ellraiser/love-builder"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellraiser%2Flove-build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellraiser%2Flove-build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellraiser%2Flove-build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ellraiser%2Flove-build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ellraiser","download_url":"https://codeload.github.com/ellraiser/love-build/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248537144,"owners_count":21120711,"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":["build-tools","love","love2d","lua"],"created_at":"2024-09-01T08:01:21.877Z","updated_at":"2025-10-11T16:32:14.188Z","avatar_url":"https://github.com/ellraiser.png","language":"Lua","funding_links":[],"categories":["Recently Updated","Distribution"],"sub_categories":["[Aug 30, 2024](/content/2024/08/30/README.md)"],"readme":"# löve-build\nAn app (built in LÖVE!) for quickly packaging LÖVE games for distribution, based off the most recent comments in [this issue](https://github.com/love2d/love/issues/890).\n\nThe goal is to make something eventually maintained by the LÖVE team that can let new developers build their games cross-platform from their own machine in a single step - with zero dependencies and no need for VMs.\n\n*This app will build + export your game for LÖVE (.love), Windows (.exe), MacOS (.app), Linux (.zip), and Steamdeck (.zip) - regardless of the platform you're developing on!*\n\n![alt text](resources/preview.png)\n\n\n---\n\n\n## Usage\nFirst you will need to setup a `build.lua` file in the root of your project:\n```lua\nreturn {\n  \n  -- basic settings:\n  name = 'SuperGame', -- name of the game for your executable\n  developer = 'CoolDev', -- dev name used in metadata of the file\n  output = 'dist', -- output location for your game, defaults to $SAVE_DIRECTORY\n  version = '1.1a', -- 'version' of your game, used to name the folder in output\n  love = '11.5', -- version of LÖVE to use, must match github releases\n  ignore = {'dist', 'ignoreme.txt'}, -- folders/files to ignore in your project\n  icon = 'resources/icon.png', -- 256x256px PNG icon for game, will be converted for you\n  \n  -- optional settings:\n  use32bit = false, -- set true to build windows 32-bit as well as 64-bit\n  identifier = 'com.love.supergame', -- macos team identifier, defaults to game.developer.name\n  libs = { -- files to place in output directly rather than fuse\n    windows = {'resources/plugin.dll'}, -- can specify per platform or \"all\"\n    all = {'resources/license.txt'}\n  },\n  hooks = { -- hooks to run commands via os.execute before or after building\n    before_build = 'resources/preprocess.sh',\n    after_build = 'resources/postprocess.sh'\n  },\n  platforms = {'windows'} -- set if you only want to build for a specific platform\n  \n}\n```\n\nThen download the build application for your OS from the [releases](https://github.com/ellraiser/love-build/releases) page.\n\nTo use the app directly, simply run it. You will see a screen prompting you to drag your `main.lua` file into the app - doing so will start the build process and export your game, opening the export location when finished. A `build.log` file will also be created to view any errors (see [Troubleshooting](#troubleshooting) for common issues).\n\nYou can view the `example-project` in this repository for an example setup.\n\n\u003e Note: First time builds will be slower due to downloading and caching LÖVE source files - after that it'll be much faster!\n\n\n---\n\n\n## Command Line\nIf you want to run via CLI, the application accepts an argument which is the full path to your `main.lua` file:\n\nWindows =\u003e `build.exe FULL/PATH/TO/main.lua`  \nMacOS =\u003e `build/Contents/MacOS/love FULL/PATH/TO/main.lua`  \nLinux =\u003e `build.AppImage FULL/PATH/TO/main.lua`\n\nYou can also pass a second option to specify the target platforms you want - by default all platforms are specified (`windows,macos,linux`), but if you want to only build for one specific platform you can do so like:  \n`build.exe FULL/PATH/TO/main.lua windows`\n\n\n---\n\n\n## Cross-Platform Building\nRegardless of the platform you run the builder from it will export your game to all 4 platforms.  \nThese will each be put in their own `.zip` file inside the `output/version` folder specified by your `build.lua`.\n\n| Build From  | Windows | MacOS | Linux |\n| ----------- | ------- | ----- | ----- |\n| Windows     |    ✓    |   ✓   |   ✓^  |\n| MacOS       |    ✓    |   ✓   |   ✓^  |\n| Linux       |    ✓    |   ✓   |   ✓^  |\n| Steamdeck   |    ✓    |   ✓   |   ✓$  |\n\n^ Linux builds are currently a 'basic' export, not an AppImage - chmod+run the `AppRun` file to run  \n$ Steamdeck builds are just a linux export, seperated so you can have a different build/config for the `Steamdeck` depot that Steam now offers developers\n\n\u003e Note: MacOS builds are _not_ signed so are not suitable for AppStore distribution\n\n\n---\n\n\n## Configurations\nIn your built project files you might notice a `lbconfig.lua` file.  \nThis contains some basic details about the configuration used to build that particular project, allowing your game to consume the file and run logic based on it.\n\nYou can setup multiple configurations by making your `build.lua` return a list of configurations.  \nYou should add a `config` key to differentiate the configurations, which will be added to your output location.\n\nAn example `build.lua` that creates a 'steam' and 'non-steam' version of the game for Windows:\n```lua\nreturn {\n\n  {\n    name = 'ExampleGame',\n    config = 'steam',\n    version = '0.8',\n    love = '11.5',\n    icon = 'resources/love-hammer.png',\n    platforms = {'windows'},\n    libs = {\n      windows = {'resources/steamworks.dll'},\n    }\n    ignore = {'dist'}\n  },\n  {\n    name = 'ExampleGame',\n    config = 'nonsteam',\n    version = '0.8',\n    love = '11.5',\n    icon = 'resources/love-hammer.png',\n    platforms = {'windows'},\n    ignore = {'dist', 'resources/steamworks.dll'}\n  }\n\n}\n```\nThis would result in two built projects, one under `/dist/0.8/steam/` and one under `/dist/0.8/nonsteam/`.  \nThe `steam` build would contain the `steamworks.dll` in the export root, the `nonsteam` would not.  \n\nIn your game logic you can then read the `lbconfig.lua` file to see if the game is the `steam` config vs the `nonsteam` config and act accordingly.\n\n\n---\n\n\n## Troubleshooting\nThese are the common errors you might see when building.  \nYou can view the logs inside `output/version/build.log` after running the builder.\n\n| Error                                                           | Info                                                       |\n| --------------------------------------------------------------- | ---------------------------------------------------------- |\n| Failed to mount project path                                    | The project path isn't readable by the executable\n| Failed to mount output path                                     | The output path isn't read/writeable by the executable\n| No build.lua file in project root                               | The path given doesn't have a build.lua\n| Invalid build.lua file in project root                          | The build.lua in the project doesn't return a valid table\n| No main.lua file in project root                                | The path you provided doesn't have a main.lua\n| Path must be to your game\\'s \"main.lua\" file                    | The path given doesn't lead to a main.lua file\n| Failed to create .lovefile                                      | Failed to create lovefile, check logs for info\n| Source download failed                                          | Failed to download release from github\n| Source file must be supplied to build this version              | Specificed version doesn't have a release on github\n| Fatal Error!                                                    | Something triggered love.errorhandler - check build.log\n\n\u003e Note: If you want to build with 12.0 you'll need to provide the source zips yourself in the `%appdata%/love-build/cache` directory, you can download the builds from the [latest successful workflow action](https://github.com/love2d/love/actions) from source or use the ones provided in the `src` folder in this repo. I would recommend building with 11.5 first to see the expected files in your cache, and check the actual contents of the zips due to Github Workflow double-zipping artifacts. The builds provided in `src` in this repo have been tested on all platforms.\n\n\n---\n\n\n## Todo\n**.AppImages for Linux export**  \nCurrently the `love-squashfs` lib handles decompressing squashfs binaries fine, however resquashing them has an issue I'm working on. At the moment the Linux export just uses the same AppImage directory format with a `AppRun` entrypoint and fused binary, which will work fine for most distros so no harm there (it also works a bit better for Steam distribution, just set your installation path as the `AppRun` file)\n \nOnce I fix up the `love-squashfs` compression issue lovebuild could add a proper `.AppImage` if needed, but I think we should still keep the `-linux.zip` output as an option for people who want it, similar to the additional 32bit option windows has.\n\nSee [todo.md](todo.md) for stuff planned in future or ideas for contributions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fellraiser%2Flove-build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fellraiser%2Flove-build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fellraiser%2Flove-build/lists"}