首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向项目添加自定义生成/准备步骤

向项目添加自定义生成/准备步骤
EN

Stack Overflow用户
提问于 2019-06-09 22:41:50
回答 1查看 36关注 0票数 1

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

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

该怎么做呢?使用ionic build/prepare甚至可以吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 05:35:48

使用Ionic Hooks (kudos @sebaferreras),我设法让它工作起来,如下所示:

将钩子添加到要使用的钩子脚本和资源的ionic.config.json"hooks": { "build:before": "./scripts/build-before.js", "serve:before": "./scripts/serve-before.js" }

  • Create
  1. 。(例如,一个用于ionic build的简单钩子脚本-为了简单起见,无需检查:

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56515528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档