Skip to content

Instantly share code, notes, and snippets.

@viT-1
Last active January 21, 2022 13:24
Show Gist options
  • Save viT-1/4894084a96e96ddb4df87253937b0ad4 to your computer and use it in GitHub Desktop.
Save viT-1/4894084a96e96ddb4df87253937b0ad4 to your computer and use it in GitHub Desktop.
#gist-bookmark #js #esm #importmap #import #alias

Если не использовать TypeScript, который при tsc-трансформации в js пропишет нужные пути в import при помощи transform и карты путей/alias, то в браузерах в importmap следует указывать путь не только для сторонних библиотек, но и под каждый импортируемый через alias файл! Спецификация importmap не предполагает glob-масок.

При этом eslint, jest и webpack конфигурируются по-своему, получаем дублирование кода. Нужда в конвертерах eslint-typescript, eslint-webpack...

По importmaps верно резюмируют:

Все что было нужно - это js колбек для импортов, начинающихся не с точки и не со слеша, который дал бы неограниченную свободу при resolve модулей. Который был бы очень простым в реализации. Но эти чуваки решили 5 лет потратить на разработку куцей и бессмысленной спецификации карт импортов. ПС:. Например, я хочу отсылать все подобные импорты в корень сервера, как есть, где сервер, имея доступ к файловой системе воспользуется механизмом node.js найдет нужный модуль и вернет его по требованию.

Что остаётся делать для esm? Использовать importmaps для внешних библиотек (VueJS, MomentJS, ...) и паковать, при необходимости переписывая пути, при подготовке релиза с помощью сборщиков и плагинов к ним. Либо писать под NodeJS свою библиотеку/скрипт, которая занимается переписыванием путей вне сборщиков.

@viT-1
Copy link
Author

viT-1 commented Dec 23, 2021

NodeJS subpath imports Added in: v14.6.0 (2020-07-21), v12.19.0 (2020-10-09).
More information: "imports" field in package.json and, subpath patterns

@viT-1
Copy link
Author

viT-1 commented Dec 23, 2021

Issue 23 for plugin eslint-import-resolver-alias

@viT-1
Copy link
Author

viT-1 commented Dec 23, 2021

Trying to solve node variant with subpath patterns:

  • current version of eslint (v8.4.1) doesn't use nodejs resolving =(
  • run node script with esm imports also failed.

Also thinking about fix-esm-import-path

@viT-1
Copy link
Author

viT-1 commented Dec 23, 2021

NodeJS:

Unfortunately --experimental-specifier-resolution=node isn't actively developed anymore

My old investigations with imports omitted extension for ts-project.
SystemJS html imports in esm modules.

@viT-1
Copy link
Author

viT-1 commented Jan 11, 2022

Not ts project but tsconfig paths.

@viT-1
Copy link
Author

viT-1 commented Jan 21, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment