Подтвердить что ты не робот

Создание моей собственной структуры и ее использование в качестве проекта для проектов

Im фрилансер, создающий веб-сайты для клиентов. У меня есть собственная devstack, основанная на React и Node. В настоящее время, когда я разрабатываю новый сайт, я просто копирую последний проект, который Ive запрограммировал и изменил маршруты, страницы и так далее. Когда я добавляю некоторые новые функции (обновляю webpack 1 до 2 и т.д.), Я должен делать это вручную в каждом проекте (или вообще не делаю этого).

Id нравится иметь более профессиональный подход к этому. Можете ли вы порекомендовать мне некоторые материалы или отношение к нему?

Моя текущая цель такова: иметь репо (частный github и после проверки дать ему общедоступный) с моей devstack (framework). Каждый раз, когда я начинаю новый проект, я его разворачиваю (чтобы он оставался как исходное происхождение) и начинал развиваться. Каждый раз, когда я меняю некоторые основные функции или добавляю то, что хочу иметь в других проектах, я хочу как-то подтолкнуть его к реестру devstack. Я также мог бы скопировать этот код в devstack вручную, но я не хочу писать его дважды, поэтому лучший подход поможет.

Как я могу это сделать, хорошая идея? В принципе, некоторая рекомендация, если она вообще создаст смысл, и некоторая ссылка на статью мне поможет. Спасибо.

4b9b3361

Ответ 1

Существует несколько подходов к этому, и все они зависят от того, сколько из вашего кода эхолота повторно используется, изменено или выброшено.

Если ваш код очень общий и позволяет настраивать, не касаясь кода эшафота, я бы рекомендовал последнюю стратегию здесь.


Вы можете использовать генератор, например yeoman. Вы можете создать свой собственный шаблон для yoman и сохранить шаблон. Таким образом, каждый раз, когда вы создаете новый сайт, единственное, что вам нужно сделать, - это вызвать yo с вашим шаблоном, при необходимости подать несколько параметров, и вы получите что-то в этом роде.


Когда речь заходит об обновлении всех ваших проектов одновременно с использованием upstream VonC дал хороший подход с форкированием.


Если вы хотите полностью отказаться от forking, и вы можете модулизовать свой эшафот, вы можете использовать git подмодули.

С git подмодулями вы можете отделить свой код "рамки" от вашего кода клиента. Существует несколько стратегий.

Это зависит от вашей установки, но одной стратегией было бы создание репозитория для каждого клиента с предопределенной структурой и добавление вашего леса в качестве подмодуля.

Посмотрите этот вопрос относительно субмодулей и субрепозиторов.


Наконец, если ваш эшафот очень общий, ничто не мешает вам создать модуль, который заполнит ваш проект необходимыми файлами и параметрами.

В вашем проекте package.json dependencies вы можете добавить:

"my-scaffold": "git+ssh://[email protected]:user/repo.git#ref"

Затем на вашем эшафоте package.json вы можете запустить развертывание script при установке:

"scripts": {
  "install" : "node tools/deploy.js"
}

И каждый раз, когда вы создаете проект, вы можете проверить версию, развернутую в настоящий момент, на версию, установленную в вашем node_modules, и повторно запустить развертывание script, чтобы обновить сценарии, необходимые в вашем проекте.

ура!

Ответ 2

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

Нажатие на devstack repo (исходный, который вы разветвляли для всего вашего проекта) является хорошим первым шагом, но он не будет волшебным образом "распространять" эту новую функцию для всех ваших других репозиториев.

Однако вы можете использовать треугольный рабочий процесс:

/img/af42b679b4796ca18f5f3805bebf325f.png

  • fork (см. Fork a Repo ") repo devstack (это то, что вы делаете уже для своих проектов)
  • клонировать, что fork локально для данного проекта,

    git clone /url/my/fork myfork
    
  • добавить как удаленный upstream исходный репо

    cd myfork
    git remote add upstream /url/to/devstack
    

Оттуда, git 2.9 или больше, настройте:

git config --global pull.rebase true
git config --global rebase.autoStash true

Наконец, каждый раз, когда вы хотите обновить одно из своих репо, чтобы воспользоваться функцией, нажатой на devstack:

cd /path/to/one/of/mine/projects
git checkout mybranch
git fetch upstream
git rebase upstream/master