4

我尝试将 Svelte 组件编译为 Web 组件。

  1. 添加了选项<svelte:options tag="date-picker" immutable={true}/>
  2. customElement: true在汇总中添加到plugins: [ svelte()
  3. npm run build

但我不断收到消息:

(!)插件苗条:未指定自定义元素“标签”选项。要自动注册自定义元素,请指定带有连字符的名称,例如 . 要隐藏此警告,请使用

我究竟做错了什么?

我的index.js文件:

export { default as default } from './DatePicker.svelte';

DatePicker.svelte文件:

<svelte:options tag="date-picker" immutable={true}/>

<script>
  /* code */

汇总文件:

import svelte from 'rollup-plugin-svelte';
import resolve from '@rollup/plugin-node-resolve';
import pkg from './package.json';

const name = pkg.name
    .replace(/^(@\S+\/)?(svelte-)?(\S+)/, '$3')
    .replace(/^\w/, m => m.toUpperCase())
    .replace(/-\w/g, m => m[1].toUpperCase());

export default {
    input: 'src/index.js',
    output: [
        { file: pkg.module, 'format': 'es' },
        { file: pkg.main, 'format': 'umd', name }
    ],
    plugins: [
        svelte({
            customElement: true
        }),
        resolve()
    ]
};

似乎如果您的项目由单个组件组成,则不会出现该消息。在此处查看问题:

https://github.com/sil-vio/svelte-web-components/issues/2

4

2 回答 2

0

您需要将customElement选项嵌套更深一步,如下所示

  plugins: [
    svelte({
      compilerOptions: {
        customElement: true,

您可以在 rollup-plugin-svelte 文档中看到这一点:https ://github.com/sveltejs/rollup-plugin-svelte#usage

于 2021-06-16T15:28:06.347 回答
-1

您必须另外添加tag: null到您的 rollup-plugins-svelte 部分。

...
         { file: pkg.main, 'format': 'umd', name }
        ],
        plugins: [
            svelte({
                customElement: true,
                tag: null
            }),
            resolve()
        ]
    };

如果您正在寻找一个工作示例: https ://github.com/ivosdc/svelte-generic-crud-table/blob/master/rollup.config.js

于 2020-06-15T23:09:19.720 回答