2016-05-19 14 views
1

Ich habe viele Projekte, die alle bestimmten Ordnerstrukturen und Konventionen folgen.Können Sie ein Schluck-Framework zwischen Projekten teilen?

Anstatt das gesamte Projekt zu duplizieren, möchte ich nur ein Konfigurationsobjekt für jedes Projekt haben und jedes Projekt verknüpft sich mit dem globalen Framework.

Beispiel:

/gulp-framework 
    index.js 
/project-a 
    gulpfile.js 
    configuration.js 
/project-b 
    gulpfile.js 
    configuration.js 

Innen index.js

var configuration = require('configuration'); 

Innen configuration.js:

module.exports = function() { 
    return { foo : true }; 
} 

Innerhalb der großen Schluck Datei würde ich habe:

require('./configuration'); 
require('../gulp-framework'); 

Allerdings running Schluck nur mich mit einem Fehler

'kann Modul Konfiguration nicht finden'.

Ich denke, alles, was ich versuche zu tun, ist in einem Config-Objekt an den globalen Rahmen übergeben, aber nicht viel Glück.

Ideen?

+0

Ich glaube, Sie vergessen "./" var configuration = require ('./ configuration'); Inside index.js –

+0

Nein Ich versuche, das exportierte Modul von configuration.js zu referenzieren –

Antwort

1

mit Grundsätzlich require('configuration') in index.js wird in /gulp-framework/node_modules/ für das configuration Modul suchen. Es lädt nicht configuration.js von project-a oder project-b. (Lesen Sie mehr über die genaue Logik wie require() arbeitet here.)

Sie müssen explizit die Konfiguration und schluck Objekt übergeben von Ihrem gulpfile.js-index.js:

In jedem gulpfile.js:

var config = require('./configuration.js'); 
var gulp = require('../gulp-framework')(require('gulp'), config); 

// project-specific stuff using gulp and config goes here 

In index.js:

module.exports = function(gulp, config) { 
    // project-independent stuff using gulp and config goes here 

    return gulp; 
}; 
+0

Ehrfürchtig werde ich das morgen versuchen und weiterlesen auf fordern! Prost –

+0

Dies funktioniert gut, um dieses Problem zu lösen, ich denke, das letzte Problem ist, sehen, wie mein Hauptrahmen lebt unter/gulp-framework Ist es möglich, die gulpfile.js in jedem Projekt zu haben, verwenden Sie den globalen Ordner node_modules? Es scheint immer noch nach den node_modules in project-a/node_modules zu suchen. –

+0

Zwei Optionen: 1. [Laden von globalen Ordnern] (https://nodejs.org/api/modules.html#modules_loading_from_global_folders). 2. Machen Sie 'project-a' zu einem Unterverzeichnis von' gulp-framework'. –