2016-06-29 10 views
0

Ich arbeite an einer Reihe von Projekten, die auf GitHub sitzen und ich möchte die Gulp-Build-Pipeline zwischen diesen teilen. Alles nutzt Babel, einschließlich der Schluckaufgaben selbst. Die gemeinsame Gulpfile möchte ich teilen erfordert Babel und dann die Aufgaben alle in einem Ordner sitzen - die gemeinsame Datei wie folgt aussieht:Wiederverwenden von Gulp-Aufgaben zwischen Projekten

require("babel-core/register"); 
require("require-dir")("gulp/tasks"); 

ich dann versucht, die gemeinsame Pipeline in ein NPM Paket zu verpacken und es als ein hinzufügen devDependency zu dem anderen Projekt. Dann ist mein gulpfile für das Projekt über die gemeinsame Einrichtung abhängig sieht wie folgt aus:

require("./node_modules/cratis.client.javascript.setup/gulpfile"); 

Wenn ich laufe dies scheint Babel zu laden und dann meine Aufgaben startet das Laden, doch irgendwie immediataly mit:

(function (exports, require, module, __filename, __dirname) { import gulp from "gulp"; 
                   ^^^^^^ 
SyntaxError: Unexpected token import 
    at Object.exports.runInThisContext (vm.js:53:16) 

Was bedeuten würde, dass Babel nicht geladen hat, was ich komisch finde - da würde ich dann erwarten, einen Ladefehler bezüglich der ersten zu sehen.

Konnte wirklich nichts über das, was hier vorging, herausfinden, also entschied ich mich, einen anderen Weg zu versuchen; Git Untermodule. Ich habe das allgemeine Pipeline-Projekt als Git-Untermodul zum Projekt hinzugefügt und die Gulp-Datei relativ zum Speicherort des Untermoduls eingefügt. Das scheint überhaupt nicht zu funktionieren - im Grunde genommen keine Dateien zu finden.

Was machen andere? Ich habe wirklich keine guten Beispiele gefunden.

Wenn der Git-Untermodul-Pfad der richtige Weg ist, würde ich gerne sehen, dass "node_modules" auch geteilt werden und eine einfache Möglichkeit, es zu pflegen.

Antwort

0

Ok NPM installieren, ich glaube, ich endlich das Problem entdeckt. npm-Abhängigkeiten werden nur im übergeordneten Projekt "Abhängigkeiten" und nicht "devDependencies" installiert. Da in Ihrer npm cratis.client.javascript.setup Sie nur devDependencies definiert haben, wird Thore nicht mit npm install von Ihrem https://github.com/Cratis/Client.JavaScript.Core-Projekt installiert. Um das zu beheben, verschieben Sie einfach alle devDepencies in Ihrem cratis.client.javascript.setup unter "Abhängigkeiten".

+0

Ausgezeichneter Fang - das bringt uns einen Schritt näher. Ich gehe davon aus, dass Sie den von mir begonnenen Git-Submodul-Ansatz ausprobiert haben. Ich dachte, ich hätte diese Änderung eingecheckt, aber tatsächlich hatte ich das Paket mit dieser Änderung nur nach NPM gebracht. Danke, dass du das gesehen hast. Es ist nicht in der Lage, die Aufgaben zu finden - und es gibt eine gute Erklärung. Es gibt jetzt zwei Sets von node_modules Repositories und es lädt 2 verschiedene Schlucke :) Ich habe console.log() in index.js von beiden eingefügt und es zeigt, dass beide geladen werden. So spuckt es aus "Task-Standard ist nicht in Ihrem gulpfile. Jetzt brauche ich nur ein Elternknoten-Modul für sie beide. Experimentieren. – EinarI

+0

Mit einigen herum bewegen - es funktioniert jetzt, und ich habe die Struktur, die ich in erster Linie als wollte Belohnung: Im Prinzip wurde der src-Ordner entfernt. Ich habe ein Projekt pro Repository-Richtlinie für meine Entwicklung und brauche es nicht - außerdem hatte ich bereits Source und Spezifikationen als Ordner. Und jetzt habe ich einen Modul-Ordner für Halten Git Untermodule Dies wird die node_modules an der Spitze der Hierarchie wiederverwenden, da Knoten rekursiv für Pakete aussieht. Ich werde Ihre Antwort als die Lösung markieren, da Sie mich auf den richtigen Weg geführt! Wirklich zu schätzen, vielen Dank! – EinarI

+0

Ich bin froh, dass du alles aussortiert hast. – andreasonny83

0

Wahrscheinlich haben Sie vergessen, die Babel-Abhängigkeiten einzuschließen, damit das Modul funktioniert. Werfen Sie einen Blick auf dieses Projekt hier https://github.com/andreasonny83/mdl-starter-kit Sie benötigen --save-dev babel-Core

Preset-es2015 babel-und babel-loader babel-Register
+0

Nein. Sie sind dort. Ich habe beides implizit durch das NPM-Paket versucht, mit Abhängigkeiten und auch direkt im Projekt mit dem NPM-Paket versucht. Gleiche Sache. Und es sagt nichts darüber aus, dass ich das Paket nicht laden kann - ich würde dort einen Fehler erwarten. Das Setup-Projekt funktioniert gut, nur das Projekt versucht, die Pipeline als Paket wiederzuverwenden, wo dies nicht der Fall ist. – EinarI

+0

Also, vielleicht müssen Sie nur den ES2015 Transpiler in Ihrem .babelrc mit: '{" Presets ": [" es2015 "]}' – andreasonny83

+0

Auch diese Karte könnte zu http://stackoverflow.com/questions verwandt werden/33604470/unexpected-token-import-in-nodejs5-und-babel also schau mal rein, um deine Antwort zu finden – andreasonny83