171 lines
3.9 KiB
Markdown
171 lines
3.9 KiB
Markdown
# Gulp HaXe Tool
|
|
|
|
## Introducing
|
|
|
|
### Dignity
|
|
|
|
* Automatically download HaXe SDK, FlashPlayer, Adobe AIR SDK.
|
|
* Universal project config for simple HaXe build and OpenFL build.
|
|
* Branch project config for many build presets (many OpenFL apps in one project).
|
|
* Packaging linux output in DEB.
|
|
* Create html wrapper for flash output.
|
|
|
|
### Flaws
|
|
|
|
* Hardcode build output in {projectDir}/target (need param in Project.Config).
|
|
* HTML5 run output not caught.
|
|
* Adobe AIR Build System in progress.
|
|
* Packaging Windows application in progress (with [Inno Setup](http://www.jrsoftware.org/isinfo.php))
|
|
|
|
### Dependencies
|
|
|
|
* [Neko VM](https://nekovm.org/download/)
|
|
|
|
|
|
## API
|
|
|
|
### Project.Config
|
|
|
|
#### constructor
|
|
|
|
* **meta**: meta information
|
|
* **title**: application title
|
|
* **filename**: application filename
|
|
* **icon**: path to icon file
|
|
* **pack**: package name for OpenFL
|
|
* **author**: author name for DEB packaging
|
|
* **company**: company name for OpenFL
|
|
* **version**: application version
|
|
* **name**: name for output directory
|
|
* **libs**: list of haxe dependencies
|
|
* **sources**: list of HaXe sources
|
|
* **assets**: list of resources
|
|
* **main**: main class name
|
|
* **macros**: list of macros
|
|
|
|
### Project
|
|
|
|
#### constructor
|
|
|
|
* **buildSystem**: Project.BuildSystem
|
|
* **platforms**: Project.Platform (list supported)
|
|
* **config**: Project.Config
|
|
|
|
#### bind
|
|
|
|
* **module**
|
|
|
|
create gulp tasks in module:
|
|
|
|
```
|
|
<config.name>:<platform>:build
|
|
<config.name>:<platform>:run
|
|
<config.name>:<platform>:pack (optionaly if supported)
|
|
```
|
|
|
|
eg: ```gulp app:flash:build```
|
|
|
|
## Example
|
|
|
|
[package.json](example/package.json)
|
|
```json
|
|
{
|
|
"name": "app",
|
|
"version": "0.0.1",
|
|
"devDependencies": {
|
|
"gulp": "^4.0.0",
|
|
"gulp-clean": "^0.4.0",
|
|
"gulp-haxetool": "file:../../gulp-haxetool"
|
|
},
|
|
"haxeDependencies": {
|
|
"lime": "6.0.1",
|
|
"openfl": "7.0.0",
|
|
"hxcpp": "3.4.188"
|
|
}
|
|
}
|
|
```
|
|
|
|
[src/Main.hx](example/src/Main.hx)
|
|
```haxe
|
|
import flash.display.Shape;
|
|
import flash.Lib;
|
|
|
|
class Main {
|
|
|
|
public static function main() {
|
|
trace("Hello world!");
|
|
var shape = new Shape();
|
|
shape.graphics.beginFill(0x00ff00);
|
|
shape.graphics.drawCircle(50, 50, 20);
|
|
shape.graphics.endFill();
|
|
Lib.current.addChild(shape);
|
|
}
|
|
}
|
|
```
|
|
|
|
[gulpfile.js](example/gulpfile.js)
|
|
```javascript
|
|
const gulp = require('gulp');
|
|
const gulpClean = require('gulp-clean');
|
|
const packageInfo = require('./package.json');
|
|
const {Sdk, Haxe, Project} = require('gulp-haxetool');
|
|
|
|
//Sdk.dir = '/opt/sdk';
|
|
|
|
exports.clean = function clean() {
|
|
return gulp.src('target/*', {read: false}).pipe(gulpClean());
|
|
};
|
|
|
|
exports.install = function install() {
|
|
const haxe = new Haxe();
|
|
return haxe.prepare().then(() => haxe.install(packageInfo.haxeDependencies));
|
|
};
|
|
|
|
const config = new Project.Config({
|
|
meta: {
|
|
title: 'Application',
|
|
filename: 'app',
|
|
icon: './resources/icon.jpg',
|
|
pack: 'com.example',
|
|
author: 'Anonim <anonim@anonim.com>',
|
|
company: 'Any company',
|
|
version: packageInfo.version,
|
|
},
|
|
name: 'app',
|
|
libs: packageInfo.haxeDependencies,
|
|
sources: ['src'],
|
|
assets: ['resources'],
|
|
main: 'Main',
|
|
});
|
|
|
|
const project = new Project(
|
|
Project.BuildSystem.OPENFL,
|
|
[
|
|
Project.Platform.FLASH,
|
|
Project.Platform.HTML5,
|
|
Project.Platform.LINUX,
|
|
],
|
|
config
|
|
).bind(module, gulp);
|
|
|
|
module.exports.default = gulp.series(
|
|
exports.clean,
|
|
exports.install,
|
|
module.exports['app:flash:build'],
|
|
module.exports['app:html5:build'],
|
|
module.exports['app:linux:build'],
|
|
module.exports['app:flash:pack'],
|
|
module.exports['app:linux:pack'],
|
|
);
|
|
```
|
|
|
|
Build for all platforms: `gulp default`
|
|
|
|
Build app for specific platform: `gulp app:flash:build`
|
|
|
|
Run flash app in flashplayer: `gulp app:flash:run`
|
|
|
|
Run html5 app in brpwser: `gulp app:html5:tun`
|
|
|
|
Run linux app native: `gulp app:linux:run`
|