Skip to content

Instantly share code, notes, and snippets.

@rossholdway
Last active January 5, 2021 21:19
Show Gist options
  • Save rossholdway/16724496806b66a162ee6cbf8bfc5def to your computer and use it in GitHub Desktop.
Save rossholdway/16724496806b66a162ee6cbf8bfc5def to your computer and use it in GitHub Desktop.
A script to run before the ionic build process that generates an app.config.ts file based off of a .env/{environment}.json file. See this comment for more info: https://github.com/ionic-team/ionic-app-scripts/issues/762#issuecomment-295235407
#!/usr/bin/env node
var path = require('path');
var process = require('process');
var fs = require('fs');
class Environment {
constructor(args) {
args = JSON.parse(args).original;
const defaultEnv = 'development'; //Set default environment
let env;
if(args.includes('ionic:build')) {
let envFlags = args.filter((arg) => arg.includes("--env"));
env = (envFlags.length === 1) ? envFlags[0].substr(envFlags[0].indexOf("=") + 1) : defaultEnv;
} else {
let index = args.indexOf('--env');
env = (index > -1) ? args[index+1] : defaultEnv;
}
console.log(`Using environment config: ${env}`);
this.setEnvironment(env);
}
setEnvironment(env) {
let config;
try {
config = require(path.join('../', '.env', env + '.json'));
} catch(e) {
throw new Error(`The config file for this environment is missing (${e.message})`);
}
var wstream = fs.createWriteStream(path.resolve('./src/app/app.config.ts'));
wstream.write(`
import { OpaqueToken } from "@angular/core"; //Use InjectionToken in Angular 4.x
export let APP_CONFIG = new OpaqueToken("app.config");
export const AppConfig = ${JSON.stringify(config)};
`);
wstream.end();
}
}
new Environment(process.env.npm_config_argv);
@rossholdway
Copy link
Author

@sklink Thanks for the update.

I've also recently discovered this and I think it's been caused by upgrading ionic cli / app scripts. Your update sounds like a good workaround, thanks.

I'll look into getting this working again with the --env= flag directly.

@prupp
Copy link

prupp commented Nov 2, 2017

@rossholdway any updates on this? Did you get this working again with the --env= flag?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment