#javascript #npm #node-modules #svelte #sveltekit
Вопрос:
В настоящее время я создаю сайт (в SvelteKit, но это относится к любому фреймворку), который будет расширен на несколько разных сайтов. Функциональность одинакова на всех сайтах, но у них будут различные CSS-файлы и, возможно, дополнительные компоненты. Этот шаблон будет использоваться разработчиками, поэтому я хочу сохранить все маршруты/данные/и т.д., Содержащиеся в моем коде, и просто позволить потребителю расширить определенные части.
Главная проблема в том, что сайт, конечно, не просто модуль, который я могу импортировать. Вокруг него есть различные инструменты для разработки/комплектации/сборки, которые я хотел бы сохранить, но они напрямую просматривают файловую систему, поэтому она должна каким-то образом выглядеть так, как будто проект находится в главном каталоге.
Я изучил следующие варианты, но они не идеальны:
- Простое разветвление репо, очевидно, работает, но это затрудняет обновление; Я хочу изолировать то, что пользователь может изменить, и упростить обновление до новых версий.
- Другие проекты, которые делают это (Здравомыслие, большинство платформ), реализуют свой собственный инструмент CLI и/или разрешение пользовательских модулей, чего я бы очень не хотел делать.
Мое идеальное решение выглядит так:
# What the package consumer sees:
- node_modules
- package.json (with scripts to run, build, etc.)
- src/
- global.css
- some-code.js
# What my code sees:
- node_modules
- package.json
- src/
- my-code
- user-src/
- user-code
но я не знаю, возможно ли это. Мы были бы признательны за любые указания о том, как это сделать.
Комментарии:
1. Почему бы вам не написать и не опубликовать пакет npm? Затем вы можете установить его на стороне потребителя, и у вас есть такие вещи, как управление версиями
2. @JulianKleine Это то, что я пытаюсь сделать; проблема в том, что эти фреймворки предназначены для запуска в качестве отдельного приложения узла или на какой-либо другой платформе, а не в виде пакета.
3. Когда что-нибудь когда-либо запускалось как пакет? Но если вы опубликуете пакет npm, а затем установите его в приложение узла, приложение узла может работать как отдельное приложение