Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cordova 向项目中添加自定义生成/准备步骤_Cordova_Ionic Framework_Ionic3 - Fatal编程技术网

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

Cordova 向项目中添加自定义生成/准备步骤,cordova,ionic-framework,ionic3,Cordova,Ionic Framework,Ionic3,我有一款针对Android和iOS的ionic应用程序 我想要实现的是,在为两种平台构建/准备代码时,能够指定一个命令行标志,但我不确定如何实现。 我的第一个目标是用另一个资源替换一个资源——在本例中是一个图像——仅用于测试版本(比如用beta图标替换发布图标) 如何做到这一点? 甚至可以使用离子构建/准备?使用(kudos@sebafereras)我设法使其工作如下: 将钩子添加到ionic.config.json: “挂钩”:{ “build:before”:“/scripts/build

我有一款针对Android和iOS的ionic应用程序

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

如何做到这一点? 甚至可以使用
离子构建/准备

使用(kudos@sebafereras)我设法使其工作如下:

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

    “挂钩”:{
    “build:before”:“/scripts/build before.js”,
    “serve:before”:“/scripts/serve before.js”
    }

  • 创建要使用的钩子脚本和资源。(例如,
    爱奥尼亚构建的简单钩子脚本
    ——为了简单起见,无需检查:


  • 也许你可以使用-特别是
    ionic:build:before
    。例如,我已经用hook做了一些事情,将应用程序版本从
    config.xml
    文件复制到一个服务中……因此,也许你可以用它来构建一些东西来替换资源:/@sebafereras想用你的信息创建一个回复帖子吗?……这样我就可以给你应得的信任值得。很高兴听到我的评论对你有所帮助!但老实说,我给你的信息可能足以发表评论,但绝对不足以给出答案……如果你能给出一个答案,解释你是如何解决问题的,那就太好了,这样我就可以给你应得的积分:)@sebafereras给你。。。让我知道我是否可以在答案的评论中改进它。它看起来很棒!!谢谢
    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);
    }