我学习了Svelte教程,并用状态机重写了 component bindings
部分中的键盘。那worked lovely。
现在,我想将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
感到困惑。您将如何发布一个 slim 的组件?编辑:final gist正确导入
Machine
Svelte组件 最佳答案
rollup-plugin-svelte和svelte-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/