向项目添加自定义构建/准备步骤

时间:2019-06-09 14:41:50

标签: cordova ionic-framework ionic3

我有一个针对Android和iOS的离子应用程序。

我想实现的目标是在构建/准备两种平台的代码时指定命令行标志,但是我不确定该怎么做。 我的第一个目标是将一个资源替换为另一个资源-在这种情况下为图像-仅用于测试版本(例如将发布图标替换为beta图标)。

如何执行此操作? 甚至可以使用ionic build/prepare吗?

1 个答案:

答案 0 :(得分:1)

我使用Ionic Hooks(荣誉@sebaferreras)设法使其工作如下:

  1. 将钩子添加到ionic.config.json

    "hooks": { "build:before": "./scripts/build-before.js", "serve:before": "./scripts/serve-before.js" }

  2. 创建要使用的挂钩脚本和资源。 (例如,用于ionic build的简单钩子脚本-为简单起见,不进行检查:

module.exports = function(ctx)
{
  // Use console.log(ctx); to print the context to the console when running 'ionic build/serve'

  const projectDir = ctx.project.dir;

  if(isDevBuild(ctx))
  {
    useDevelopmentImage(projectDir);
    console.log('Using development logo.');
  }
  else
  {
    useProductionImage(projectDir);
    console.log('Using production logo.');
  }
};

function isDevBuild(context)
{
  if(context.build.prod)
    return false;

  return true;
}

function useDevelopmentImage(projectDir)
{
  const devLogoPath = projectDir + '/images/dev_logo.png';
  // Could also use context.project.src instead of projectDir + '/src...'
  const targetPath  = projectDir + '/src/assets/imgs/logo.png';

  let fs = require('fs');
  fs.copyFileSync(devLogoPath, targetPath); 
}

function useProductionImage(projectDir)
{
  const prodLogoPath = projectDir + '/images/prod_logo.png';
  const targetPath   = projectDir + '/src/assets/imgs/logo.png';

  let fs = require('fs');
  fs.copyFileSync(prodLogoPath, targetPath);
}