2016-06-29 4 views
0

Я работаю над множеством проектов, сидящих на GitHub, и я хочу поделиться конвейером Gulp между ними. Все использует Вавилон, включая сами задачи Gulp. Распространенное Gulpfile я хочу поделиться требует Бабеля, а затем все задачи, сидя в папке - общий файл выглядит следующим образом:Повторное использование задач Gulp между проектами

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

Затем я попытался упаковать общий трубопровод в пакет НПМ и добавить его в качестве devDependency к другому проекту. Тогда мой gulpfile для проекта в зависимости от общей установки выглядит следующим образом:

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

Когда я запускаю это, кажется, чтобы загрузить Бабель, а затем начинает загружать свои задачи, но не может immediataly с:

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

Это указывает на то, что Babel не загружается, что я нахожу странным - так как тогда я ожидаю увидеть ошибку загрузки, связанную с первым требованием.

Не мог ничего понять о том, что здесь происходит, поэтому я решил попробовать другой путь; Git. Я добавил общий проект трубопровода в качестве вспомогательного модуля Git к проекту и включил gulpfile относительно местоположения вспомогательного модуля. Это вообще не работает - в основном не найти файлы.

Что делают другие? Я действительно не нашел хороших примеров.

Если путь к модулю Git является правильным, я хотел бы видеть, что «node_modules» также являются общими, а также простой способ его поддерживать.

ответ

0

Хорошо, я думаю, что я, наконец, обнаружил проблему. Зависимости npm устанавливаются только в «зависимостях» родительского проекта, а не «devDependencies». Итак, поскольку в вашем npm cratis.client.javascript.setup вы только определили devDependencies, thore не будет установлен с npm install из вашего проекта https://github.com/Cratis/Client.JavaScript.Core. Чтобы исправить это, просто переместите все devdepencies в cratis.client.javascript.setup в разделе «зависимости».

+0

Отличный улов - это приближает нас на один шаг. Я предполагаю, что вы попробовали подход Git Submodule, который я начал. Я думал, что я проверил это изменение, но на самом деле только толкал пакет в NPM с этим изменением. Так что спасибо за это. Он не может найти задачи - и есть хорошее объяснение. Теперь есть два набора репозиториев node_modules, и он загружает 2 разных глотка :) Я помещаю в console.log() в index.js обоих, и он показывает, что он загружает оба. Так что он выплевывает «Задача по умолчанию не в вашем gulpfile.Теперь мне просто нужен родительский узел_модуль для них обоих. Экспериментирование. – EinarI

+0

С некоторым движением - это действительно работает сейчас, и я получил структуру, в которой я хотел, в первую очередь, как В общем, я избавился от папки src. У меня есть один проект для каждой политики репозитория для моей разработки и мне не нужен - кроме того, у меня уже есть исходники и спецификации в виде папок. И теперь у меня есть папка Modules for поддерживая Git sub modules.Это будет повторно использовать node_modules в верхней части иерархии, так как узел выглядит рекурсивно для пакетов.Я помету ваш ответ как решение, так как вы привели меня по правильному пути! Очень ценю это, спасибо большое! – EinarI

+0

Я рад, что ты все разобрал. – andreasonny83

0

Возможно, вы забыли включить функции Babel для работы модуля. Взгляните на этот проект здесь https://github.com/andreasonny83/mdl-starter-kit Вам необходимо установить НПМ --save-DEV столпотворение-жильный столпотворение-погрузчик Бабель-предустановленного-es2015 и столпотворение регистра

+0

Nope. Они там. Я пробовал и неявно через пакет NPM, который я сделал, имея в нем зависимости, а также непосредственно в проекте, используя пакет NPM. То же самое. И он ничего не говорит о невозможности загрузки пакета - я бы ожидал ошибки там. Проект установки работает отлично, его просто проект пытается повторно использовать конвейер в качестве пакета, где это не так. – EinarI

+0

Итак, возможно, вам просто нужно включить транспилер ES2015 в ваш .babelrc с помощью: '{" presets ": [" es2015 "]}' – andreasonny83

+0

Кроме того, эта карта может быть связана с http://stackoverflow.com/questions/33604470/unexpected-token-import-in-nodejs5-and-babel, так что посмотрите там, чтобы найти свой ответ. – andreasonny83

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