При компиляции приложения cordova каждый отдельный файл в моей папке /www
копируется в папку assets/www
(android), но я хотел бы настроить, какие файлы будут скопированы. Я использую несколько псевдоязыков, таких как CoffeeScript, Jade или Stylus, которые автоматически скомпилированы моей IDE, и они не должны быть отправлены в окончательное приложение.
Кордова Build - игнорировать файлы
Ответ 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
:
Это, конечно, нужно доработать, но я работаю с ним как временная договоренность.
Удачи...