Я пытаюсь использовать проекты с рабочими пространствами пряжи и ссылками на проекты машинописного текста. Приближаюсь довольно близко, но я не могу разобраться с предложениями автоматического импорта VsCode.
Структура:
\
tsconfig.base.json
\packages\shared
package.json // name: "@shared", main: "lib/index.js"
tsconfig.json // extends base
include, baseUrl & rootDir: "src"
outDir: "lib"
\packages\project1
package.json // "dependencies": {"@shared":"*"}
tsconfig.json // extends base
"references": [{ "path": "../shared" }]
Я могу построить оба проекта, используя ts c - b со всеми этими вариантами импорта:
{} from "@shared" <- package main index.js
{} from "@shared/src" <- TS source
{} from "@shared/lib" <- compiled JS
Однако импорт из @ shared / sr c завершится с ошибкой Rollup (он не будет принимать файлы не JS вне своего rootDir, даже с @ rollup-plugin-typescript). Я могу использовать @ rollup-plugin-alias для переназначения различных вариантов, но ...
Проблема:
VsCode будет предлагать только @ shared / sr c (худший выбор, если я собираюсь использовать JS) для автоимпорта и дополнения и предложения по рефакторингу
- Я пытался использовать пути с именем, отличным от проекта, но это не говорит об этом.
- Я попытался "исключить": ["@ shared / sr c", "../src", "node_modules / @ shared / src] в tsconfig. json
- Я пытался удалить зависимость проекта рабочей области в пряже, но он все еще видит в root node_modules / @ shared, я полагаю
- Edit : Я попытался установить ссылку на проект на "node_modules / @ shared" и удивился: VsCode предлагает правильный импорт (@ chrc / shared)! Однако сборка завершается неудачно, так как ts c не может найти ../../tsconfig.base.json из этого tsconfig.
Это предназначено? Это VsCode, результат функции редактирования без сборки в TS 3.7 (отлично работает кстати) или пряжа вещь? Почему VsCode игнорирует официальный пакет. json точка входа и TS outDir? Я не издатель пакета, но нормально ли иметь столько точек входа в пакет? В основном все опубликовано c - я ожидал большей изоляции?
Контекст
Моя главная цель для опробования ссылок состоит в том, что у меня есть проект Rollup и React проект, и я хотел поделиться общим кодом и интерфейсами между ними. Только для частного репо, но я надеялся на более чистые / разные зависимости / модульные SRP / параллельные сборки. В нашем текущем репо все смешано на root и существует риск спагетти.
(Я также не могу получить файлы объявлений окружения для совместного использования из общего проекта ... Я должен кажется, экспортировать их явно, так что, возможно, это была просто плохая идея)