https://github.com/tidev/babel-plugin-transform-titanium
babel plugin for optimizing titanium code
https://github.com/tidev/babel-plugin-transform-titanium
babel babel-plugin npm-package titanium titanium-mobile
Last synced: 3 months ago
JSON representation
babel plugin for optimizing titanium code
- Host: GitHub
- URL: https://github.com/tidev/babel-plugin-transform-titanium
- Owner: tidev
- Created: 2019-01-07T19:00:29.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-03-06T21:41:49.000Z (almost 2 years ago)
- Last Synced: 2025-06-21T00:05:49.705Z (6 months ago)
- Topics: babel, babel-plugin, npm-package, titanium, titanium-mobile
- Language: JavaScript
- Homepage:
- Size: 920 KB
- Stars: 1
- Watchers: 15
- Forks: 2
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# babel-plugin-transform-titanium [](https://jenkins.appcelerator.org/job/titanium-sdk/job/babel-plugin-transform-titanium/job/master/) [](https://www.npmjs.com/package/babel-plugin-transform-titanium)
This is a babel plugin intended to optimize Titanium SDK applications by inlining various static values. Once inlined, Other babel plugins may perform additional optimizations to help strip away "dead code".
Information about the current Titanium application build should be passed to the plugin's options object.
## Plugin Options
```javascript
const options = {
deploytype: 'development', // one of 'development', 'test', 'production'
platform: undefined, // one of 'android', 'ios', 'windows'
target: undefined, // one of 'dist-playstore', 'dist-appstore', 'dist-adhoc', null/undefined
Ti: {
version: undefined, // string, SDK version
App: {
id: undefined, // string, application id from tiapp.xml
name: undefined, // string, application name from tiapp.xml
version: undefined, // string, application version from tiapp.xml
},
Platform: {
osname: undefined, // one of 'android', 'ipad', 'iphone', 'windowsphone', 'windowsstore'
}
}
};
```
## Special "defines"
It can:
- replace special `OS_*` references with boolean values
- `OS_IOS` - `true` iff `pluginOptions.platform === 'ios'`
- `OS_ANDROID` - `true` iff `pluginOptions.platform === 'android'`
- `OS_WINDOWS` - `true` iff `pluginOptions.platform === 'windows'`
- Useful for `if`/`else` guards for platform specific code. Once booleans are inlined the false blocks can be removed.
- replace special `ENV_*` references with boolean values
- `ENV_DEV` and `ENV_DEVELOPMENT` - `true` iff `pluginOptions.deploytype === 'development'` (typically simulator builds)
- `ENV_TEST` - `true` iff `pluginOptions.deploytype === 'test'` (typically device builds)
- `ENV_PROD` and `ENV_PRODUCTION` - `true` iff `pluginOptions.deploytype === 'production'` (typically app store/ad hoc builds)
- replace special `DIST_*` references with boolean values
- `DIST_ADHOC` - `true` iff `pluginOptions.target === 'dist-adhoc'`
- `DIST_STORE` - `true` iff `pluginOptions.target === 'dist-appstore' || pluginOptions.target === 'dist-playstore'`
## OS "sniffing" via Ti.Platform.osname
- replace typical "sniff" expressions for iOS/Windows using `Ti.Platform.osname` with static boolean values
i.e.
```javascript
if (Ti.Platform.osname === 'iphone' || Ti.Platform.osname === 'ipad') {
Ti.API.info('on ios!');
}
if (Ti.Platform.osname === 'windowsstore' || Ti.Platform.osname === 'windowsphone') {
Ti.API.info('on windows!');
}
```