发布一个苗条的3组件:package.json的“ main”和“ svelte”字段的语义?

时间:2019-06-24 18:52:27

标签: svelte svelte-component

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

现在,我想将Machine.svelte文件提取到npm程序包中,但不确定如何执行。我找不到有关发布的任何文档。对于从svelte-virtual-list中看到的内容,我可能必须配置main的{​​{1}}或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?您将如何发布一个精巧的组件?

编辑:final gist正确导入了VirtualList.svelte Svelte组件

1 个答案:

答案 0 :(得分:1)

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

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

但是在某些情况下,您要做希望非精简版用户能够将您的组件用作独立类,这就是main有用的前提,只要它指向到预编译的JavaScript文件。这可以在prepublish脚本中使用rollup-plugin-svelte生成(尽管我们可以做得更好一些,以生成一些与此相关的标准工作流程)。为了获得最大的兼容性,打算以这种方式使用的组件(或组件包)应具有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中。