Ich bin ein Yeoman Generator für eine ziemlich typische Knoten App Aufbau:Was ist die empfohlene Art, mehrere dotfiles mit yeoman zu kopieren?
/
|--package.json
|--.gitignore
|--.travis.yml
|--README.md
|--app/
|--index.js
|--models
|--views
|--controllers
im Ordner Vorlagen meines Yeoman Generator, muss ich die dotfiles umbenennen (und die package.json), um sie daran zu hindern, in Bearbeitung als Teil des Generators:
templates/
|--_package.json
|--_gitignore
|--_travis.yml
|--README.md
|--app/
|--index.js
|--models
|--views
|--controllers
ich sehe eine Menge von Generatoren, die dotfiles einzeln manuell kopieren:
this.copy('_package.json', 'package.json')
this.copy('_gitignore', '.gitignore')
this.copy('_gitattributes', '.gitattributes')
I denke, es ist ein Schmerz, meinen Generatorcode manuell zu ändern, wenn ich neue Vorlagendateien hinzufüge. Ich möchte automatisch alle Dateien im Ordner/templates kopieren und die Namen mit dem Präfix _ umbenennen.
Was ist der beste Weg, dies zu tun?
Wenn ich meine Absicht, in imaginären regex zu beschreiben, ist es das, was es aussehen würde:
this.copy(/^_(.*)/, '.$1')
ths.copy(/^[^_]/)
EDIT Dies ist die beste kann ich verwalten:
this.expandFiles('**', { cwd: this.sourceRoot() }).map(function() {
this.copy file, file.replace(/^_/, '.')
}, this);
Auch erwähnenswert, dass, wenn Sie eine glod in vom Ziel verwenden, ein Verzeichnis sein muss. – Swordfish0321
Dies war die richtige Antwort und verdient es, aufgefrischt zu werden. Siehe mein letztes Commit für ein Anwendungsbeispiel: https://github.com/srsgores/generator-stylus-boilerplate/commit/d785cfe31e3a519edb3b75edb22a5dbc776ecdfd – user1429980
Danke! Außerdem kann this.destinationRoot() durch this.destinationPath ("path/to/folder") für relative Ziele ersetzt werden (wie in srsgores Commit-Beispiel angegeben). –