GitHub user erisu edited a comment on the discussion: Plugin: Set minimum iOS
deployment target
If you simply want to terminate the build and notify the app user that their
`deployment-target` is too low, you can use a hook script, as suggested by
@breautek.
**Example Script:**
```javascript
const path = require('node:path');
const semver = require('semver');
const xcode = require('xcode');
const { ConfigParser } = require('cordova-common');
const CordovaPlatform = require('cordova-ios');
const MINIMUM_DEPLOYMENT_TARGET = '15.0';
module.exports = context => {
const projectRoot = context.opts.projectRoot;
const platformPath = path.join(projectRoot, 'platforms', 'ios');
const iosProject = new CordovaPlatform('ios', platformPath);
const cfg = new ConfigParser(iosProject.locations.configXml);
// Get Deployment Target from config.xml.
let deploymentTarget = cfg.getPreference('deployment-target', 'ios');
if (!deploymentTarget) {
const target = path.basename(iosProject.locations.xcodeCordovaProj);
const xcodeProject = xcode.project(iosProject.locations.pbxproj);
xcodeProject.parseSync();
// Get Deployment Target from pbxproj
deploymentTarget =
xcodeProject.getBuildProperty('IPHONEOS_DEPLOYMENT_TARGET', undefined, target);
}
if (compareDeploymentTarget(deploymentTarget)) {
throw new Error(`The project's deployment-target "${deploymentTarget}"
is too low. Should be greater then ${MINIMUM_DEPLOYMENT_TARGET}`);
}
}
const compareDeploymentTarget = (current) => semver.lt(
// Converting the current deployment target to a semver format to compare
with.
semver.coerce(current)?.version || '0.0.0',
semver.coerce(MINIMUM_DEPLOYMENT_TARGET)?.version
);
```
**Required NPM Packages:**
You'll need to install the following dependencies:
- `semver`
- `xcode`
- `cordova-common`
These packages are included with `cordova-ios`, but it's recommended to install
them separately to avoid potential issues if `cordova-ios` updates or removes
them.
Then set the script to run before the build (`before_build`).
The prepare step should have already been completed and if the user sets a
`deployment-target` in their `config.xml`, it should be available in the
platform's `config.xml`.
If it's missing, the script will retrieve the default value from `pbxproj`.
GitHub link:
https://github.com/apache/cordova/discussions/529#discussioncomment-12601774
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]