5

我学习了 Svelte 教程并component bindings使用状态机重写了该部分中的键盘。那工作很可爱

现在我想将Machine.svelte文件提取到一个npm包中,但我不知道该怎么做。我找不到任何有关发布的文档。对于我从svelte-virtual-list看到的内容,我可能必须配置 my 的mainorsvelte字段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此外,我对 in theVirtualList.svelte不存在的事实感到困惑?你将如何发布一个苗条的组件?

编辑:最终要点正确导入MachineSvelte 组件

4

1 回答 1

6

rollup-plugin-svelte和(如果配置正确)svelte-loader使用该svelte字段来定位源文件,以便您的第三方组件与您的应用程序的其余部分同时编译(并从相同的内部导入图书馆)。

在像 svelte-virtual-list 这样的情况下,您不能真正通过 JavaScript 以编程方式使用它(即它必须在另一个组件中),实际上也没有任何意义main。我认为这是以前版本遗留下来的东西。

但在某些情况下,您确实希望非 Svelte 用户能够将您的组件用作独立类,这main很有用,只要它指向预编译的 JavaScript 文件。这可以在prepublish脚本期间使用 rollup-plugin-svelte 生成(尽管我们可以更好地围绕此生成一些标准工作流)。为了获得最大的兼容性,打算以这种方式使用的组件(或组件包)应该有一个pkg.main(通常index.js是 CommonJS 或 UMD 文件)和一个pkg.module(通常index.mjs是 JavaScript 模块)。

此外,我对 package.json.files 中不存在 VirtualList.svelte 的事实感到困惑?

不管里面有什么pkg.filespkg.main总是被包括在内。pkg.main由于svelte-virtual-list 中存在错误,因此该VirtualList.svelte文件包含在包中,即使我忘记将其添加到pkg.files.

于 2019-06-24T19:17:14.717 回答