Simple CLI tool for bundling TIC-80 cartridge code. Supports any language!
// Yarn
yarn add tic-bundle --dev
// Npm
npm i tic-bundle --save-dev
Config
{
"files": ["ui.js", "main.js"],
"assets": ["assets.js"]
}
Input
src/main.js
function TIC() {
};
// <TILES>
// 000:0100000010100000010000000000000000000000000000000000000000000000
// </TILES>
src/ui.js
function ui() {
return 'ui';
};
src/assets.js
// script: js
// <TILES>
// 000:0100000010100000010000000000000000000000000000000000000000000000
// </TILES>
Output
build.js
// script: js
function ui() {
return 'ui';
};
function TIC() {
};
// <TILES>
// 000:0100000010100000010000000000000000000000000000000000000000000000
// </TILES>
package.json
{
"scripts": {
"watch": "tic-bundle"
}
}
CLI options
-
-r / --root
- Root folder -
-w / --wait
- Wait interval -
-c / --config
- Path to config file -
-o / --output
- Bundled file output path -
-n / --name
- Bundle file name -
-f / --file
- Bundle file extension -
-s / --script
- Language -
-b / --build
- Build
tic-bundle
supports config files. By default, tic-bundle
looks for a .ticbundle.js
file in the current directory, but an alternative location can be specified using -c <file>
or --config <file>
.
The specificity is as folows:
.ticbundle.js
.ticbundle.json
- CLI
- Default config
Default config
{
root: 'src',
wait: 200,
metadata: {
title: null,
author: null,
desc: null,
script: 'js',
input: null,
saveid: null
},
output: {
path: './',
extension: 'js',
name: 'build'
},
files: [],
assets: [],
after: null
}
-
root
(defaultsrc
) - Folder to watch. -
wait
(default200
) - Chokidar awaitWriteFinish.stabilityThreshold -
metadata
- Cartridge metadata -
metadata.title
- The name of the cart. -
metadata.author
- The name of the developer. -
metadata.description
- Optional description of the game. -
metadata.script
(defaultjs
) - Used scripting language. -
metadata.input
- Selects gamepad, mouse or keyboard input source. -
metadata.saveid
- Allows save data to be shared within multiple games on a copy of TIC. -
output.path
(default./
) - Bundled file output path. -
output.extension
(defaultjs
) - Bundle file output extension -
output.name
(defaultbuild
) - Bundled file name. -
files
- Files to bundle. Asset data will be stripped (graphics data, sprite data, etc.) Files will be ordered by index (top first, bottom last). -
assets
- Assets to bundle. Code data will be stripped. Assets will be ordered by index (top first, bottom last) and are always places belowfiles
. -
after
- Run after generating the bundle, this can be used to further modify the bundle.
after
can be used to transform the bundled code. A common use-case for js
is transforming ES6
syntax to ES5
.
Example
.ticbundle.js
module.exports = {
after: bundle => {
const { code } = require('@babel/standalone').transform(bundle, {
plugins: [require('@babel/plugin-transform-arrow-functions')]
});
return code;
}
};