Как сделать build html файла с помошью parcel 2.0.0-rc.0?

У меня в проекте установлен

  "main": "./dist/index.mjs",
  "source": "./frontend/src/index.mjs",
  "type": "module",
 "scripts": {
    "dev": "parcel $npm_package_config_path_html --port $npm_package_config_port --no-source-maps --dist-dir ./docs ",
    "build:html": "parcel build $npm_package_config_path_html  --no-source-maps --dist-dir ./docs ",
    "build": "parcel build $npm_package_config_path_mjs --no-source-maps --dist-dir ./dist ",
    "kill": "kill $(lsof -t -i:$npm_package_config_initiator)",
    "clean:parcel": "find . -name \".parcel-cache\" -exec rm -rf '{}' +; "
  },
  "devDependencies": {
    "parcel": "2.0.0-rc.0"
  },

Все скрипты, которые указанны в package.json работают, кроме build:html.

Когда я пытаюсь собрать html, я получаю ошибку

? Build failed.

@parcel/namer-default: Target "main" declares an output file path of "dist/index.mjs" which does not match the compiled bundle type "html".

  /home/zb/Desktop/webrtc/frontend/src/modules/connect/package.json:5:11
    4 |   "version": "1.0.1",
  > 5 |   "main": "./dist/index.mjs",
  >   |           ^^^^^^^^^^^^^^^^^^ Did you mean "dist/index.html"?
    6 |   "source": "./frontend/src/index.mjs",
    7 |   "type": "module",

  ? Try changing the file extension of "main" in package.json.
error Command failed with exit code 1.

Этот скрипт соберёт html если из package.json убрать поле "main": "./dist/index.mjs", Но это поле нужно для того, что бы разместить этот проект в npm.

Что можно прописать в этот скрипт, что бы можно было оставить поле main ?


Ответы (1 шт):

Автор решения: Sergey

Многие package.json файлы (например, созданный npm init) содержат main поле, которое игнорируется большинством инструментов (для не библиотечных проектов). Однако, когда отображается main поле, Parcel делает вывод, что ваш проект является библиотекой, и использует его в качестве пути вывода. Для большинства веб-приложений эту строку следует удалить.

Если вам нужно сохранить main поле и вы хотите, чтобы Parcel игнорировал его, вы можете добавить его "targets": { "main": false } в свой package.json, а так же определить для html отдельную точку сборки. Например так "targets": { "docs": { "source": "./frontend/src/index.html" } },

→ Ссылка