опубликовать компонент svelte 3: семантика для полей "main" и "svelte" файла package.json? - PullRequest
1 голос
/ 24 июня 2019

Я взял учебник 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 нет? Как бы вы пошли о публикации компонента svelte ??

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

1 Ответ

2 голосов
/ 24 июня 2019

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

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

Но в некоторых случаях вы do хотите, чтобы пользователи, не являющиеся 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.

...