https://github.com/erbridge/itchy-electron
Package your Electron games for itch.io
https://github.com/erbridge/itchy-electron
Last synced: 4 months ago
JSON representation
Package your Electron games for itch.io
- Host: GitHub
- URL: https://github.com/erbridge/itchy-electron
- Owner: erbridge
- License: mit
- Created: 2016-05-14T22:56:50.000Z (about 10 years ago)
- Default Branch: main
- Last Pushed: 2020-06-14T17:26:56.000Z (about 6 years ago)
- Last Synced: 2025-04-10T07:17:50.472Z (over 1 year ago)
- Language: JavaScript
- Size: 18.6 KB
- Stars: 29
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Itchy Electron
> Package your [Electron](http://electron.atom.io/) games for [itch.io](https://itch.io/)
## About
This is a CLI app for building and publishing games and tools built using [Electron](http://electron.atom.io/) to [itch.io](https://itch.io/). It aims to handle everything from packaging your Electron app into distributables, to publishing it on itch.io. It wraps other tools into a single unified interface, with sensible defaults and simple commands that can easily be called manually or added as `package.json` scripts.
Bug reports, feature requests, and pull requests are welcome!
## Installation
Install into a project using `npm`:
```
$ npm install --save-dev itchy-electron
```
or globally:
```
$ npm install -g itchy-electron
```
Publishing also relies on [`butler`](https://github.com/itchio/butler), which needs to be manually installed.
## Usage
Once installed, *Itchy Electron* is used through the CLI tool `itchy`.
Refer to the help for an up to date command reference:
```
$ itchy help
```
### Configuration
*Itchy Electron* uses configuration files over command line arguments. To configure it, either add an object to your `package.json` called `itchyElectron`, or create a JavaScript or JSON file called `.itchyelectronrc`, `.itchyelectron.js`, or `.itchyelectron.json` (whatever takes your preference).
The only "required" options are `electronVersion` (which is inherited from the `package.json` if possible - see below for more details) and `itchTargets`.
A minimal `package.json` configuration looks like this:
```json
{
"name": "example",
"version": "0.1.0",
"itchyElectron": {
"productName": "Example",
"appDir": "./app",
"itchTargets": {
"release": "erbridge/example"
}
},
"devDependencies": {
"electron-prebuilt": "1.0.2",
"itchy-electron": "^0.1.0"
}
}
```
or `.itchyelectron.json`:
```json
{
"productName": "Example",
"appVersion": "0.1.0",
"electronVersion": "1.0.2",
"itchTargets": {
"beta": "erbridge/example-beta",
"release": "erbridge/example"
}
}
```
#### Options
##### `appDir`
The app source directory. Defaults to the current directory.
##### `appVersion`
The release version of the application. Maps to the `ProductVersion` metadata property on Windows, and `CFBundleShortVersionString` on OS X. Defaults to the `version` from the `package.json`.
##### `buildDir`
The directory to save builds into. Defaults to `./build`.
##### `buildVersion`
The build version of the application. Maps to the `FileVersion` metadata property on Windows, and `CFBundleVersion` on OS X. Defaults to `appVersion`.
##### `electronVersion`
The version of Electron to build against. If omitted, the pinned version in the `package.json` dependencies will be used. If there is no locally pinned version number, the build will fail.
Accepted packages are:
- `electron`
- `electron-prebuilt`
- `electron-prebuilt-compile`
##### `itchTargets`
An object of key value pairs of target to project, used for publishing.
##### `productName`
The application name. If omitted, `name` from the `package.json` will be used instead. If no name is present, it will default to `untitled`.
### Project Structure
It is suggested that you structure your app in the following way, so as to minimize the overheads caused by packaging the `devDependencies`.
```
project/
app/
The entire app source is contained within here.
package.json
A minimal package.json containing a reference to the
app entry point in "main" along with the runtime
dependencies in "dependencies". Other values are optional.
build/
dist/
package.json
A more complete package.json with the development dependencies
and other values. This is where the "itchyElectron"
configuration belongs, if using the package.json option.
```
Setting `appDir` to `./app` in this case will enable building packages with only the runtime dependencies. It also has the bonus effect of excluding the various configuration files often found in a project's root.