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.stabilityThresholdmetadata
- Cartridge metadatametadata.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 extensionoutput.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;
}
};