UNPKG

cordova-plugin-universal-links-fix

Version:

Cordova plugin to add in your application support for Universal Links (iOS 9) and Deep Links (Android). Basically, open application through the link in the browser.

56 lines (47 loc) 1.75 kB
/** Hook is executed when plugin is added to the project. It will check all necessary module dependencies and install the missing ones locally. */ var path = require('path'); var fs = require('fs'); var spawnSync = require('child_process').spawnSync; var pluginNpmDependencies = require('../package.json').dependencies; var INSTALLATION_FLAG_FILE_NAME = '.npmInstalled'; // region mark that we installed npm packages /** * Check if we already executed this hook. * * @param {Object} ctx - cordova context * @return {Boolean} true if already executed; otherwise - false */ function isInstallationAlreadyPerformed(ctx) { var pathToInstallFlag = path.join(ctx.opts.projectRoot, 'plugins', ctx.opts.plugin.id, INSTALLATION_FLAG_FILE_NAME); try { fs.accessSync(pathToInstallFlag, fs.F_OK); return true; } catch (err) { return false; } } /** * Create empty file - indicator, that we tried to install dependency modules after installation. * We have to do that, or this hook is gonna be called on any plugin installation. */ function createPluginInstalledFlag(ctx) { var pathToInstallFlag = path.join(ctx.opts.projectRoot, 'plugins', ctx.opts.plugin.id, INSTALLATION_FLAG_FILE_NAME); fs.closeSync(fs.openSync(pathToInstallFlag, 'w')); } // endregion module.exports = function(ctx) { if (isInstallationAlreadyPerformed(ctx)) { return; } console.log('Installing dependency packages: '); console.log(JSON.stringify(pluginNpmDependencies, null, 2)); var npm = (process.platform === "win32" ? "npm.cmd" : "npm"); var result = spawnSync(npm, ['install', '--production'], { cwd: './plugins/' + ctx.opts.plugin.id }); if (result.error) { throw result.error; } createPluginInstalledFlag(ctx); };