Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.11.2024, 19:06
Кандидат Javascript-наук
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 102

Module parse failed: The keyword 'interface' is reserved
Пробовал загрузить собственный пакет в npm но после скачивания выдаёт ошибку "Module parse failed: The keyword 'interface' is reserved".

Информация из package.json
"main": "src/index.tsx",
  "files": [
    "src"
  ],
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^7.3.1",
    "@typescript-eslint/parser": "^7.3.1",
    "eslint": "^8.57.0",
    "eslint-plugin-import": "^2.29.1",
    "eslint-plugin-prettier": "^5.1.2",
    "eslint-import-resolver-typescript": "^3.6.1",
    "eslint-plugin-react": "^7.34.1",
    "eslint-plugin-react-hooks": "^4.6.0"
  },
  "dependencies": {
    "react": "^18.0.0",
    "typescript": "^5.5.4"
  }


Долго искал решение этой проблемы но развёрнутого ответа нигде не было. Так же пробовал смотреть как это работает в других пакетах, но там всё тоже что указано сверху. Может кто-то может рассказать как решить эту проблему?
Ответить с цитированием
  #2 (permalink)  
Старый 05.11.2024, 19:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Нужно добавить опцию типа transpileDependencies\transpilePackages(или что там у твоего сборщика) и указать там твой пакет.

По умолчанию сборщики не компилят ничего в node_modules, подразумевая что там уже скомпиленый код.

P.S. В идеале и ты должен свой пакет в npm фигачить в скомпилированном виде, чтоб избежать возможных несовместимостей версий ts в будущих проектах, но тут тебе видней.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 10.11.2024, 16:10
Кандидат Javascript-наук
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 102

Сообщение от Aetae Посмотреть сообщение
Нужно добавить опцию типа transpileDependencies\transpilePackages(или что там у твоего сборщика) и указать там твой пакет.

По умолчанию сборщики не компилят ничего в node_modules, подразумевая что там уже скомпиленый код.

P.S. В идеале и ты должен свой пакет в npm фигачить в скомпилированном виде, чтоб избежать возможных несовместимостей версий ts в будущих проектах, но тут тебе видней.
А компилятор автоматически объединяет импорты всех файлов в один, если указать компиляцию только index файла пакета?
Ответить с цитированием
  #4 (permalink)  
Старый 10.11.2024, 19:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Raadsert, ответа нет. Так как нет в js никакого однозначного "компилятора". Разве что: "как настроишь - так и будет".

Если говорить о сборщиках(webpack, vite, rollup...), то они обычно собирают таки в один файл.
Если говорить о транспиляторе тайпскипта(tsc), то он в голом виде транспилирует только указанный файл или все файлы раздельно.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 10.11.2024, 20:01
Кандидат Javascript-наук
Отправить личное сообщение для Raadsert Посмотреть профиль Найти все сообщения от Raadsert
 
Регистрация: 09.12.2021
Сообщений: 102

Сообщение от Aetae Посмотреть сообщение
Нужно добавить опцию типа transpileDependencies\transpilePackages(или что там у твоего сборщика) и указать там твой пакет.

По умолчанию сборщики не компилят ничего в node_modules, подразумевая что там уже скомпиленый код.

P.S. В идеале и ты должен свой пакет в npm фигачить в скомпилированном виде, чтоб избежать возможных несовместимостей версий ts в будущих проектах, но тут тебе видней.
Сообщение от Aetae Посмотреть сообщение
Raadsert, ответа нет. Так как нет в js никакого однозначного "компилятора". Разве что: "как настроишь - так и будет".

Если говорить о сборщиках(webpack, vite, rollup...), то они обычно собирают таки в один файл.
Если говорить о транспиляторе тайпскипта(tsc), то он в голом виде транспилирует только указанный файл или все файлы раздельно.
А если говорить о tsup? Он сейчас наиболее удобный, как я понял. Он ведь должен все функции, вызваные через import, перетащить в index файл, или нет?
Ответить с цитированием
  #6 (permalink)  
Старый 10.11.2024, 20:36
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Хз, не пользовался. Запусти да посмотри на результат.

Существует множество разных вариантов поставки: как целый однофайловый бандл, так и набор модулей с импортами. Браузер умеет из укоробки работать с модулями раскидными по файлам в формате esm, node умеет работать с esm и common'js. Существует так же множество иных не-нативных систем, типа amd или system.js, и множество способов собирать в один файл.
__________________
29375, 35
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждений тред cyber Оффтопик 2130 03.10.2018 08:10
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15