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);
    }
  });
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow