tl; dr:
Как мне импортировать / запрашивать по абсолютному пути в пакете nodejs, скомпилированном из Typescript?
Длинная версия:
Этот вопрос, вероятно, являетсяdup, но я очень долго искал:
У меня есть модуль машинописного текста, он настроен на компиляцию из src -> lib и имеет корневой путь:
tsconfig
"baseUrl": "src",
"outDir": "lib",
В моих исходных файлах я довольно успешно использую локальный импорт: где src / utils / immerReducer является локальным файлом
import { GetNamedReducer } from 'utils/immerReducer';
разрешается правильно.В моем скомпилированном коде у меня есть
var immerReducer_1 = require("utils/immerReducer");
Для публикации я копирую package.json в папку lib.Затем он упаковывается в пакет и используется внутри (через «пряжу»).К сожалению, в потребляющем приложении я получаю:
Module not found: Error: Can't resolve 'utils/immerReducer'
Из того, что я могу сказать, инструкция require не ищет локальный пакет .
Я пыталсяразрешите это двумя различными способами:
1) Измените пути импорта на конкретные пути к файлам
var immerReducer_1 = require("/utils/immerReducer");
Это работает в скомпилированном коде, к сожалению, в оригинальном источнике:
import { GetNamedReducer } from '/utils/immerReducer';
выдает ошибку
2) Вставить весь скомпилированный код в node_modules
Это просто ... слишком сильно.Для начала мне часто нужно ссылаться на конкретные файлы непосредственно в потребляющем проекте (из-за того, что я не могу понять, как экспортировать в пространства имен, и мне нужна некоторая организация в импортированном коде).
import { GetNamedReducer } from '@company/package/node_modules/utils/immerReducer'; // <-- I refuse to do this
Я прочитал очень много вопросов с вариантами этой жалобы, и ответы, как правило, соответствуют варианту «не исправит».Но должен быть способ сделать это чисто.