繁体   English   中英

Cordova Build - 忽略文件

[英]Cordova Build - ignore files

编译cordova应用程序时,我/www文件夹中的每个文件都被复制到assets/www文件夹(android),但我想自定义要复制的文件。 我使用了几种伪语言,如CoffeeScript,Jade或Stylus,它们由我的IDE自动编译,不应该发送到最终的应用程序中。

本文的帮助下,我发现您可以创建/编辑platform/android/ant.properties ,并platform/android/ant.properties添加以下行:

aapt.ignore.assets=!*.map:!thumbs.db:!.git:.*:*~

使用此行,匹配其中一个模式的任何文件目录都不会包含在.apk文件中:

  • *.map
  • thumbs.db
  • .git
  • .*
  • *~

我发现编辑platforms/android/build.xml 行不通的,因为每次调用构建时它都会被覆盖; 另外,在项目的根目录中创建build.xml文件不起作用。

此属性的规则如下,取自$ANDROID_HOME/tools/ant/build.xml

<!-- 'aapt.ignore.assets' is the list of file patterns to ignore under /res and /assets.
         Default is "!.svn:!.git:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"

         Overall patterns syntax is:
           [!][<dir>|<file>][*suffix-match|prefix-match*|full-match]:more:patterns...

         - The first character flag ! avoids printing a warning.
         - Pattern can have the flag "<dir>" to match only directories
           or "<file>" to match only files. Default is to match both.
         - Match is not case-sensitive.
    -->
    <property name="aapt.ignore.assets" value="" />

默认情况下,隐藏(。*)文件夹和文件将被忽略

构建时将忽略所有隐藏文件和文件夹,例如.git/ .gitignore

隐藏:用a重命名文件夹. (点)前置于文件夹/文件名。

要在开始时使用。(点)重命名文件夹,您可能需要CLI

在Linux / Mac中使用终端重命名该文件夹。

mv dev .dev

在Windows中使用cmd

ren dev .dev

我不知道如何过滤cordova的文件,但我可以描述一下我们在项目中使用的方法。

我们使用gruntjsPhoneGap的插件。 我们将其配置为使用预建文件夹(仅包含必要的文件和文件夹)并且:

  • 创建cordova / phonegap项目
  • 添加插件,平台
  • 构建本机应用程序
  • 在模拟器上启动本机应用程序

这种方法的主要内容是cordova / phonegap项目(带有.cordova,平台和www文件夹的目录)只是一个构建工件。

以下是我们的Gruntfile.js的相关部分作为示例:

  phonegap : {
     config : {
        root : './out/dist',
        config : {
           template : './config.tpl.xml',
           data: {
              id: pkg.id,
              version: pkg.version,
              name: pkg.name,
              author : pkg.author
           }
        },
        path : 'out/phonegap',
        plugins : [
           // PHONEGAP OFFICIAL PLUGINS
           'org.apache.cordova.globalization',
           'org.apache.cordova.network-information',
           'org.apache.cordova.splashscreen',

           //THIRD-PARTY PLUGINS
           'de.appplant.cordova.plugin.local-notification'
        ],
        platforms : [
           'android'
        ],
        maxBuffer : 200, // You may need to raise this for iOS.
        verbose : false,
        releases : 'out/releases',
        releaseName : function() {
           return pkg.name + '-v' + pkg.version;
        },

        // Android-only integer version to increase with each release.
        // See http://developer.android.com/tools/publishing/versioning.html
        versionCode : function() {
           return 1;
        }
     }
  }

注意,out / dist由先前的构建步骤生成,并包含连接和缩小版本的代码。

我创建了一个自定义脚本来忽略不仅适用于android的文件/文件夹:

将其添加到config.xml

<ignore entries="lang,foo/bar,ignore/asdf.html" />

而且你还需要两个位于hooks / before_buildhooks / after_build文件夹中的文件。

我强烈推荐cordova-plugin-exclude-files 您只需指定要排除的文件作为config.xml文件中exclude-files标记的pattern属性。

例如,要排除所有.scss文件:

<exclude-files pattern="**/*.scss" />

并且仅在Android平台上排除字符串“仅限ios”的所有文件:

<platform name="android"> <exclude-files pattern="ios-only" /> </platform>

这就是我正在做的事情。 我已将www folder的应用程序的src文件移动到在root- web-app创建的另一个文件夹中。 接下来,在package.json中添加了以下script

在此输入图像描述

这肯定需要改进,但我正在使用它作为临时安排。

祝好运...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM