added readme and example
This commit is contained in:
170
README.md
Normal file
170
README.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user