2016-05-19 3 views
1

У меня есть много проектов, которые следуют за конкретными структурами папок и соглашениями.Можете ли вы поделиться каркасом глотки между проектами?

Вместо того чтобы дублировать весь проект, я хотел бы просто иметь объект конфигурации для каждого проекта, и каждый проект связан с глобальной каркасной.

Пример:

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

Внутри index.js

var configuration = require('configuration'); 

Внутри configuration.js:

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

Внутри файла глотком я бы:

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

Однако работающий глоток просто оставляет меня с ошибкой

«Невозможно найти конфигурацию модуля».

Я предполагаю, что все, что я пытаюсь сделать, это передать объект конфигурации в глобальную структуру, но не иметь большой удачи.

Идеи?

+0

Я думаю, вы забыли «./» var configuration = require ('./ configuration'); in index.js –

+0

Нет Я пытаюсь ссылаться на экспортированный модуль из configuration.js –

ответ

1

В основном с помощью require('configuration') в index.js будет искать configuration модуля в /gulp-framework/node_modules/. Он не загрузит configuration.js от project-a или project-b. (Подробнее о точной логике, как require() работает here.)

Вы должны явно передать конфигурации и глотком объект из gulpfile.js в index.js:

В каждом gulpfile.js:

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

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

В index.js:

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

    return gulp; 
}; 
+0

Удивительный Я попробую это завтра и прочитаю по требованию! Cheers –

+0

Это работало отлично, чтобы решить эту проблему, я думаю, последняя проблема заключается в том, как моя основная структура живет в/gulp-framework Возможно ли иметь gulpfile.js внутри каждого проекта, используя глобальную папку node_modules? Кажется, что он все еще ищет узловые_модули внутри project-a/node_modules. –

+0

Два варианта: 1. [Загрузка из глобальных папок] (https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders). 2. Сделайте 'project-a' поддиректором' gulp-framework'. –

Смежные вопросы