我学习了Svelte教程,并用状态机重写了 component bindings 部分中的键盘。那worked lovely

现在,我想将Machine.svelte文件解压缩到npm包中,但我不确定该怎么做。我找不到有关发布的任何文档。对于从svelte-virtual-list看到的内容,我可能必须配置mainsveltepackage.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感到困惑。您将如何发布一个 slim 的组件?

编辑:final gist正确导入Machine Svelte组件

最佳答案

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

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

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



无论pkg.files中包含什么内容,都将始终包含pkg.main。由于svelte-virtual-list中存在错误的pkg.main,即使我忘记将VirtualList.svelte文件添加到pkg.files,该文件也包含在软件包中。

关于svelte - 发布一个 slim 的3组件: semantics for "main" and "svelte" fields of package. json?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56742348/

10-09 23:32