Кордова Build - игнорировать файлы

При компиляции приложения cordova каждый отдельный файл в моей папке /www копируется в папку assets/www (android), но я хотел бы настроить, какие файлы будут скопированы. Я использую несколько псевдоязыков, таких как CoffeeScript, Jade или Stylus, которые автоматически скомпилированы моей IDE, и они не должны быть отправлены в окончательное приложение.

Ответ 1

С помощью этой статьи я обнаружил, что вы можете создать/отредактировать 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="" />

Ответ 2

По умолчанию скрытые (. *) папки и файлы будут игнорироваться

Все скрытые файлы и папки будут игнорироваться во время сборки, например .git/ и .gitignore

Чтобы скрыть: переименуйте папку с помощью . (точка), добавленной к имени папки/файла.

Чтобы переименовать папку с. (точка) при запуске, вам может понадобиться CLI

Используйте терминал в Linux/Mac для переименования папки.

mv dev .dev

Использовать cmd в Windows

ren dev .dev

Ответ 3

Я не знаю, как фильтровать файлы для кордовы, но я могу описать, как вы относитесь к тому, что мы используем в наших проектах.

Мы используем gruntjs с phonegap плагин. Мы настраиваем его на использование предварительно созданной папки (которая содержит только необходимые файлы и папки), и она:

  • создает проект 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 генерируется предыдущим этапом сборки и содержит конкатенированную и уменьшенную версию кода.

Ответ 4

Я создал пользовательский script, чтобы игнорировать файлы/папки, которые работают не только для android:

Добавьте это в свой config.xml:

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

И вам нужно еще два файла, расположенные в hooks/ before_build и hooks/after_build папки.

Ответ 5

Я очень рекомендую cordova-plugin-exclude-files. Вы просто указываете файлы для исключения в качестве атрибутов pattern тегов exclude-files в вашем файле config.xml.

Например, чтобы исключить все файлы .scss:

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

И чтобы исключить все файлы со строкой "ios-only" только на платформе Android:

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

Ответ 6

Это то, что я делаю. Я переместил файлы src для приложения, www folder в другую папку, созданную в корневом каталоге - web-app. Затем в package.json был добавлен следующий script:

enter image description here

Это, конечно, нужно доработать, но я работаю с ним как временная договоренность.

Удачи...