Snowpack: справочные файлы вне папки проекта
Наша команда разрабатывает множество браузерных приложений на JavaScript. Эти приложения имеют общие функциональные возможности (основные) и веб-компоненты (общие). Структура папок:
/apps
/app-1
/app-2
...
/core
/shared
Каждая папка содержит
src
папка.
Учитывая использование снежного покрова в папке
app-1
Я хочу сослаться на файлы js в
/core/src
или же
/shared/src
как для разработки (с использованием
snowflake dev
) и упаковка (с использованием
snowflake build
)
- Это возможно?
- есть ли лучшие практики, как этого добиться?
- есть ли примеры для такой ситуации (или подобной)
Что пробовал:
Шаг 1: Я использовал такие пути:
../../core/src/router.js
. Это не сработало, возможно потому, что ресурсы находились за пределами корневого веб-узла тестового сервера (snowflake dev
).
Шаг 2: я создал две символические ссылки:
apps/app-1/src/@core -> ../../../core/src
apps/app-1/src/@shared -> ../../../shared/src
Теперь локальный сервер нашел все ресурсы. Однако процесс сборки обнаружил только те файлы, которые были прямыми дочерними элементами
core/src
или же
shared/src
, но не любой файл в подпапке, например
shared/src/component/filter.js
.
Есть идеи или мысли?
Приложение
В
snowpack.config.json
приложения-1:
{
"devOptions": {
"port": 8082,
"open": "none"
},
"mount": {
"public": "/",
"src": "/_dist_"
},
"plugins": [
"@snowpack/plugin-babel",
"@snowpack/plugin-dotenv",
"@snowpack/plugin-sass"
]
}
Пример импорта в
app-1/src/handler
:
import { loadRoute } from '../@core/router' // works fine
import '../@shared/component/filter' // does not work
// or:
import { loadRoute } from '../@core/router.js' // works fine, too
import '../@shared/component/filter.js' // does not work neither
2 ответа
Я немного опоздал на вечеринку, но столкнулся с той же проблемой.
Я решил это, добавив:
workspaceRoot: '..',
к
snowpack.config.js
.
По сути, он сообщает Snowpack обрабатывать все из родительской папки (
..
) через его трубопровод. Он подберет зависимости и все обработает.
В вашем случае вы можете импортировать файлы из
shared
в
app-1
используя относительные пути и не создавая символических ссылок:
import something from '../shared/something';
Вы можете узнать больше о
workspaceRoot
свойство в документации снежного покрова .
У вас должна быть возможность указать относительный путь к папке в вашем
mount
объект как другой ключ:
{
"mount": {
"../../shared": "/_dist_"
}
}
это должно обслуживать ваши файлы из
shared
каталог из
/_dist_
папка.