ionic-framework
Ionische CLI-Haken
Suche…
Bemerkungen
Einführung
Hooks sind Codeteile, die von Cordova CLI an bestimmten Stellen in Ihrem Cordova / Ionic-Anwendungsbuild ausgeführt werden. Mit Hooks können Sie beispielsweise Dateien in unserem Projekt bearbeiten, Plugins automatisch in Ihre Anwendung einfügen oder wie im obigen Beispiel nach Codefehlern in Ihren Dateien suchen.
Hinweis : Es wird dringend empfohlen, Ihre Hooks mit Node.js so zu schreiben, dass sie plattformübergreifend sind. Sie können sie jedoch auch beispielsweise in Javascript schreiben.
Hakentypen
Die folgenden Hook-Typen werden unterstützt, und die Ausführungsreihenfolge ist dem Namen nach weitgehend selbsterklärend.
after_build
after_compile
after_docs
after_emulate
after_platform_add
after_platform_rm
after_platform_ls
after_plugin_add
after_plugin_ls
after_plugin_rm
after_plugin_search
after_prepare
after_run
after_serve
before_build
before_compile
before_docs
before_emulate
before_platform_add
before_platform_rm
before_platform_ls
before_plugin_add
before_plugin_ls
before_plugin_rm
before_plugin_search
before_prepare
before_run
before_serve
pre_package/ <-- Applicable to Windows 8 and Windows Phone only. This hook is deprecated.
Möglichkeiten, Haken zu definieren:
Hooks können in config.xml
des config.xml
mithilfe von <hook>
-Elementen definiert werden, zum Beispiel:
<hook type="after_build" src="scripts/appAfterBuild.js" />
Als Plugin-Entwickler können Sie Hook-Skripte mithilfe von <hook>
-Elementen in einer plugin.xml
wie plugin.xml
:
<hook type="after_build" src="scripts/afterBuild.js" />
before_plugin_install
, after_plugin_install
, Hooks für before_plugin_uninstall
Plugins werden ausschließlich für das Plugin after_plugin_install
, das installiert / deinstalliert wird.
Hinweis : Das Platzieren von Hooks im Verzeichnis root/hooks
gilt als veraltet zu Gunsten der Hook-Elemente in config.xml
und plugin.xml
. Wenn Sie diesen Ansatz jedoch verwenden, müssen Sie die Ausführungsrechte für die Dateien im Ordner root/hooks
festlegen.
Dokumentation für Cordova-Haken finden Sie hier .
Mit jshint nach Fehlern in Ihren Javascript-Dateien in before_prepare suchen
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var jshint = require('jshint').JSHINT;
var async = require('async');
var foldersToProcess = [
'js'
];
foldersToProcess.forEach(function(folder) {
processFiles("www/" + folder);
});
function processFiles(dir, callback) {
var errorCount = 0;
fs.readdir(dir, function(err, list) {
if (err) {
console.log('processFiles err: ' + err);
return;
}
async.eachSeries(list, function(file, innercallback) {
file = dir + '/' + file;
fs.stat(file, function(err, stat) {
if (!stat.isDirectory()) {
if (path.extname(file) === ".js") {
lintFile(file, function(hasError) {
if (hasError) {
errorCount++;
}
innercallback();
});
} else {
innercallback();
}
} else {
processFiles(file);
}
});
}, function(error) {
if (errorCount > 0) {
process.exit(1);
}
});
});
}
function lintFile(file, callback) {
console.log("Linting " + file);
fs.readFile(file, function(err, data) {
if (err) {
console.log('Error: ' + err);
return;
}
if (jshint(data.toString())) {
console.log('File ' + file + ' has no errors.');
console.log('-----------------------------------------');
callback(false);
} else {
console.error('Errors in file ' + file);
var out = jshint.data(),
errors = out.errors;
for (var j = 0; j < errors.length; j++) {
console.error(errors[j].line + ':' + errors[j].character + ' -> ' + errors[j].reason + ' -> ' + errors[j].evidence);
}
console.error('-----------------------------------------');
setTimeout(function() {
callback(true);
}, 10);
}
});
}