babel-plugin-transform-titanium
v0.1.1
Published
Replace known values in Titanium apps to allow for further simplification via dead code/evaluation in babel minify
Downloads
138
Readme
This is a babel plugin intended to optimize Titanium SDK applications by inlining various static values. Once inlined, Other babel plugins may performa 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
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 valuesOS_IOS
-true
iffpluginOptions.platform === 'ios'
OS_ANDROID
-true
iffpluginOptions.platform === 'android'
OS_WINDOWS
-true
iffpluginOptions.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 valuesENV_DEV
andENV_DEVELOPMENT
-true
iffpluginOptions.deploytype === 'development'
(typically simulator builds)ENV_TEST
-true
iffpluginOptions.deploytype === 'test'
(typically device builds)ENV_PROD
andENV_PRODUCTION
-true
iffpluginOptions.deploytype === 'production'
(typically app store/ad hoc builds)
- replace special
DIST_*
references with boolean valuesDIST_ADHOC
-true
iffpluginOptions.target === 'dist-adhoc'
DIST_STORE
-true
iffpluginOptions.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.
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!');
}