публикация компонента svelte 3: семантика для основных и svelte полей package.json?

Я взял руководство по Svelte и переписал клавиатуру в разделе component bindings с конечным автоматом. Этот отлично работал.

Теперь я хочу извлечь файл Machine.svelte в пакет npm, и я не знаю, как это сделать. Я не смог найти никакой документации о публикации. Для того, что я видел из svelte-virtual-list, мне, вероятно, придется настроить либо main или поле svelte моего package.json:

{
  "name": "@sveltejs/svelte-virtual-list",
  "version": "3.0.0",
  "description": "A <VirtualList> component for Svelte apps",
  "main": "VirtualList.svelte",
  "svelte": "VirtualList.svelte",
  "scripts": {
    "build": "rollup -c",
    "dev": "rollup -cw",
    "prepublishOnly": "npm test",
    "test": "node test/runner.js",
    "test:browser": "npm run build && serve test/public",
    "pretest": "npm run build",
    "lint": "eslint src/VirtualList.svelte"
  },
  "devDependencies": {
    "eslint": "^5.12.1",
    "eslint-plugin-svelte3": "git+https://github.com/sveltejs/eslint-plugin-svelte3.git",
    "port-authority": "^1.0.5",
    "puppeteer": "^1.9.0",
    "rollup": "^1.1.2",
    "rollup-plugin-commonjs": "^9.2.0",
    "rollup-plugin-node-resolve": "^4.0.0",
    "rollup-plugin-svelte": "^5.0.1",
    "sirv": "^0.2.2",
    "svelte": "^3.0.0-beta.2",
    "tap-diff": "^0.1.1",
    "tap-dot": "^2.0.0",
    "tape-modern": "^1.1.1"
  },
  "repository": "https://github.com/sveltejs/svelte-virtual-list",
  "author": "Rich Harris",
  "license": "LIL",
  "keywords": [
    "svelte"
  ],
  "files": [
    "src",
    "index.mjs",
    "index.js"
  ]
}

Это правильное предположение? Вдобавок меня озадачивает тот факт, что в package.json.files VirtualList.svelte нет? Как бы вы поделились с публикацией стройного компонента ??

РЕДАКТИРОВАТЬ: окончательная суть правильно импортировав компонент Machine Svelte


person user3743222    schedule 24.06.2019    source источник


Ответы (1)


Поле svelte используется rollup-plugin-svelte и (при правильной настройке) svelte-loader, чтобы найти исходный файл, чтобы ваши сторонние компоненты компилировались одновременно с остальная часть вашего приложения (и импорт из той же внутренней библиотеки).

В таком случае, как svelte-virtual-list, когда вы не можете использовать его программно из JavaScript (т.е. он должен находиться внутри другого компонента), действительно нет смысла иметь поле main; это что-то, что осталось от предыдущей версии, я думаю.

Но в некоторых случаях вы действительно хотите, чтобы пользователи, не являющиеся пользователями Svelte, могли использовать ваш компонент как автономный класс, и в этом случае main полезно, если он указывает на предварительно скомпилированный файл JavaScript. Это может быть сгенерировано с помощью rollup-plugin-svelte во время prepublish скрипта (хотя мы могли бы лучше сгенерировать некоторые стандартные рабочие процессы вокруг этого). Для максимальной совместимости компонент или пакет компонентов, предназначенный для использования таким образом, должен иметь pkg.main (обычно index.js, который является файлом CommonJS или UMD) и pkg.module (обычно index.mjs, который является модулем JavaScript).

Кроме того, меня озадачивает тот факт, что в package.json.files VirtualList.svelte нет?

Независимо от того, что находится в pkg.files, pkg.main будет всегда включаться. Поскольку в svelte-virtual-list есть ошибочный pkg.main, файл VirtualList.svelte включен в пакет, хотя я забыл добавить его в pkg.files.

person Rich Harris    schedule 24.06.2019