Библиотека Npm, разработанная с помощью Typescript и псевдонима модуля

Я разрабатываю библиотеку npm, используя Typescript в качестве языка программирования. Для удобства разработки я использовал опцию paths в tsconfig.json и module-alias, чтобы иметь возможность писать импорты, такие как import * from '@/utils'. Проблема в том, что эти пути остаются прежними и в перенесенных файлах js. Это должно быть хорошо, потому что module-alias должен работать с этими путями. Проблема в том, что это работает только тогда, когда я использую его локально, но когда я устанавливаю библиотеку с помощью npm и пытаюсь ее запустить, она перестает работать. Как я могу это решить?

Примечание. Я обнаружил проблему, если я помещаю конфигурацию __moduleAliases в package.json проекта, используя мою библиотеку, и использую путь к дистрибутиву моей библиотеки, он работает. Тем не менее я не знаю, как решить эту проблему.

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
0
706
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я думаю, что нашел решение, но оно все еще не идеально.

В module-alias я могу передать в качестве аргумента путь к package.json с настройками, поэтому я просто использую moduleAlias(path.join(__dirname, '..', 'package.json')); чтобы указать "абсолютным" образом package.json моей библиотеки и даже если он установлен другим пользователем в другой Псевдоним модуля проекта будет использовать package.json моей библиотеки.

Есть еще две проблемы:

  • Во-первых, если проект, импортирующий мою библиотеку, также использует псевдоним модуля, он больше не будет работать, потому что он будет искать псевдонимы в моей библиотеке, а не в моем проекте.
  • Во-вторых, если в моем проекте используется машинописный текст, при встрече @ возникают ошибки. Я думаю, что единственный способ решить эту проблему — использовать что-то, что изменит пути «@» на реальные пути в результате js.
Ответ принят как подходящий

Оказалось очень ostic решить. В конце концов я использовал веб-пакет, чтобы изменить все пути с псевдонимами @ на обычные пути, чтобы эта проблема не сохранялась, и удалил псевдоним модуля. Я использовал этот плагин веб-пакета https://www.npmjs.com/package/tsconfig-paths-webpack-plugin , а этот другой плагин можно было использовать без веб-пакета https://www.npmjs.com/package /tsconfig-пути

Чтобы увидеть библиотеку, скомпилированную с помощью веб-пакета и использующую этот плагин, вы можете посмотреть https://github.com/euberdeveloper/euberlog

Другие вопросы по теме