2013-10-22 9 views
5

Ich erstelle meinen ersten Yeoman Generator. Ich möchte eine externe ZIP-Datei herunterladen, die ein CMS enthält, und sie im Stammverzeichnis entpacken. Dies sollte nach this thread möglich sein. Wurde das noch nicht implementiert? Was muss ich zu meinem Generator kopieren, wenn nicht?Zip mit Yeoman Generator herunterladen

Ich habe Generator Generator laufen und habe meine grundlegende Generator auf. Das ist bisher mein Code.

Generator.prototype.getVersion = function getVersion() { 
    var cb = this.async() 
    , self = this 

    this.log.writeln('Downloading Umbraco version 6.1.6') 
    this.download('http://our.umbraco.org/ReleaseDownload?id=92348', '.'); 
} 

Das erzeugt einen Fehler, der mir sagt, dass es Modul 'Download' nicht finden kann ". Was ist die korrekte Syntax?

+0

Hallo. Würde es Ihnen etwas ausmachen, meine Antwort zu akzeptieren? Vielen Dank. –

Antwort

6

Ich habe eine kleine Untersuchung für Sie.

There are two methods to download something with yeoman...

/** 
* Download a string or an array of files to a given destination. 
* 
* @param {String|Array} url 
* @param {String} destination 
* @param {Function} cb 
*/ 

this.fetch(url, destination, cb) 

/** 
* Fetch a string or an array of archives and extract it/them to a given 
* destination. 
* 
* @param {String|Array} archive 
* @param {String} destination 
* @param {Function} cb 
*/ 

this.extract(archive, destination, cb) 

Der Rückruf wird einen Fehler, wenn etwas schief gelaufen ist passieren.

There's also a method to download packages from Github.

/** 
* Remotely fetch a package from github (or an archive), store this into a _cache 
* folder, and provide a "remote" object as a facade API to ourself (part of 
* generator API, copy, template, directory). It's possible to remove local cache, 
* and force a new remote fetch of the package. 
* 
* ### Examples: 
* 
*  this.remote('user', 'repo', function(err, remote) { 
*  remote.copy('.', 'vendors/user-repo'); 
*  }); 
* 
*  this.remote('user', 'repo', 'branch', function(err, remote) { 
*  remote.copy('.', 'vendors/user-repo'); 
*  }); 
* 
*  this.remote('http://foo.com/bar.zip', function(err, remote) { 
*  remote.copy('.', 'vendors/user-repo'); 
*  }); 
* 
* When fetching from Github 
* @param {String} username 
* @param {String} repo 
* @param {String} branch 
* @param {Function} cb 
* @param {Boolean} refresh 
* 
* @also 
* When fetching an archive 
* @param {String} url 
* @param {Function} cb 
* @param {Boolean} refresh 
*/ 
+0

Hilfe erforderlich !! Was bedeuten 'Repo' und' Lieferanten/Benutzer-Repo'? Ist 'repo' der gesamte 'URL'-Pfad zum eigentlichen' repository'? – Daggerhunt

+0

@Daggerhunt: Die Argumente von remote.copy sind "Quell" - und "Ziel" -Pfade (lokal), also ändern Sie einfach das Ziel an die Stelle, an der die Dateien enden sollen. 'repo' sollte nur der Name des Repositorys sein, mit dem die URL erstellt wird: url = 'https://github.com/' + [Benutzername, Repo, 'Archiv', Zweig] .join ('/') + '.tar.gz'; ' –