Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 仅将主要部件与苗条捆扎在一起_Webpack_Rollup_Svelte - Fatal编程技术网

Webpack 仅将主要部件与苗条捆扎在一起

Webpack 仅将主要部件与苗条捆扎在一起,webpack,rollup,svelte,Webpack,Rollup,Svelte,我只想将主要组件捆绑在一个小巧的应用程序中,并使用我选择的容器将应用程序自己引导到一个脚本标记中 在Svelte模板(rollup和bootstrap)中,应用程序是main.js中的bootstrap,它导入App.Svelte。我只想捆绑App.svelte并自己实例化App类。目标是能够在我想要的任何平台上重用应用程序,并能够选择目标(例如:在CMS、SharePoint等中使用组件) 我们也要这样做: const app = new App({ target: document.

我只想将主要组件捆绑在一个小巧的应用程序中,并使用我选择的容器将应用程序自己引导到一个脚本标记中

在Svelte模板(rollup和bootstrap)中,应用程序是main.js中的bootstrap,它导入App.Svelte。我只想捆绑App.svelte并自己实例化App类。目标是能够在我想要的任何平台上重用应用程序,并能够选择目标(例如:在CMS、SharePoint等中使用组件)

我们也要这样做:

const app = new App({
    target: document.body,
    props: {}
});
我自己在index.html中的脚本标记中


我是webpack的新手,我找不到如何绑定并调用index.html中的App类。如果您检查Svelte的属性,您会注意到有一个选项可以编译为web组件,customElement。这就是您要查找的内容,以及标记选项。

我终于找到了使用汇总的sveltejs/template start项目所需的内容

在main.js中,删除App类的实例化并导出该类

import App from './App.svelte';

export default App;
默认情况下,汇总生成将把main.js的默认导出存储在一个变量中,该变量在rollup.config文件(output->name)中命名

编辑index.html,将脚本放在正文中,然后添加脚本标记:

<body>
    <div id="app-container"></div>
    <script src='/bundle.js'></script>
    <script>
        var myapp= new app({
            "target": document.getElementById("app-container"),
            "props": {
                "name": 'world'
            }
        })
    </script>
</body>

你是说“customElement”吗?我明白了,但这并不能解释如何配置网页包或汇总,你能给我一个配置示例吗?我应该将app.svelte设置为入口点吗?如何在index.html中的脚本标记中获取导出的类?@2pha您是对的,我使用了确切的选项名进行了更新@PortePoisse如果您使用的是rollup,您应该有一个名为
svelte
的插件,您可以将这些选项添加到该插件中。App.svelte组件将是您的自定义元素。您可以找到更详细的指南,谢谢分享您的经验。顺便说一句,如果你正在浏览你的网页,你可以
从“/src/App.svelte”导出{default}
entry: './src/App.svelte',
resolve: {
    alias: {
        svelte: path.resolve('node_modules', 'svelte')
    },
    extensions: ['.mjs', '.js', '.svelte'],
    mainFields: ['svelte', 'browser', 'module', 'main']
},
output: {
    path: __dirname + '/public',
    filename: 'bundle.js',
    chunkFilename: 'bundle.[id].js',
    library: 'app',
    libraryExport: 'default',
    libraryTarget: 'var'
},
...