2016-03-07 2 views
1

Я уже давно использую gulp и знаю, как импортировать другой модуль узла, например.Требовать другой файл в gulpfile (который не находится в node_modules)

var sass = require('gulp-sass'); 

Это хорошо, но мой gulpfile заполняется с кодом, который я хотел бы перейти в отдельный файл и «требует». В частности, я пишу плагин postcss, который у меня уже работает, когда он объявлен как функция внутри gulpfile. Мой вопрос заключается в том, как поместить мою функцию во внешний файл и потребовать его, как я делаю модуль узла. Нужно ли мне «экспортировать» функцию в требуемый файл? Нужно ли мне использовать модули ES6 или что-то в этом роде?

В качестве стороннего я понимаю, что если бы я делал это, я бы либо (A) превратил это в правильный модуль узла и поместил его в частный репозиторий NPM, но это кажется ненужным, или (B) его повернуть в правильный плагин gulp, но это потребует изучения того, как создать плагин gulp и узнать о потоках и т. д. Оба они, вероятно, лучше, но потребуется больше времени, поэтому я решил просто сохранить функцию простой и локальной на данный момент.

+0

Что насчет 'require ('./ your_folder/your_file')' – cl3m

+0

Это звучит просто, но что если бы я это сделал? Требуется() функция gulp или это новая функция javascript, которая работает, потому что мы используем новую версию javascript? если я сделал var myfunction - require ('...'); как бы убедиться, что моя внутренняя функция назначается переменной? – jonhobbs

+0

Чтобы ответить на мой собственный вопрос, module.exports и require() кажутся функциями узла, они не принадлежат к gulp и не являются встроенными функциями javascript. – jonhobbs

ответ

5

Сначала создайте новый JS-файл (здесь ./lib/myModule.js):

//./lib/myModule.js 
module.exports = { 
    fn1: function() { /**/ }, 
    fn2: function() { /**/ }, 
} 

Вы также могли бы пройти некоторые аргументы модуля:

// ./lib/myAwesomeModule.js 
var fn1 = function() { 
} 
module.exports = function(args) { 
    fn1: fn1, 
    fn2: function() { 
     // do something with the args variable 
    }, 
} 

Затем требуется его в gulpfile:

//gulpfile.js 
var myModule = require('./lib/myModule') 

// Note: here you required and call the function with some parameters 
var myAwesomeModule = require('./lib/myAwesomeModule')({ 
    super: "duper", 
    env: "development" 
}); 

// you could also have done 
/* 
var myAwesomeModuleRequire = require('./lib/myAwesomeModule') 
var myAwesomeModule = myAwesomeModuleRequire({ 
    super: "duper", 
    env: "development" 
}); 
*/ 

gulp.task('test', function() { 
    gulp.src() 
    .pipe(myModule.fn1) 
    .pipe(myAwesomeModule.fn1) 
    .gulp.dest() 
} 
+0

Это похоже на то, что мне нужно. SO говорит, что я должен подождать 3 минуты, прежде чем принять ваш ответ. Предположительно, если я просто хочу вернуть одну функцию, я просто отправлю одну функцию обратно и которая будет назначена моей переменной. – jonhobbs

+0

Да, вы просто выполняете 'module.exports = function (args) {}'. См. Править – cl3m

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