我终于在 sveltejs/template 启动项目中找到了我想要的东西,它使用了 rollup。
在main.js中,删除App类的实例化并导出该类。
import App from './App.svelte';
export default App;
汇总构建会将 main.js 的默认导出存储在一个变量中,在 rollup.config 文件中命名(输出 -> 名称),默认为 app。
编辑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>
我删除了 bundle script 标签的 defer 属性以确保它之前运行过。
编辑 - WEBPACK 配置
我终于找到了如何使用 webpack,输出必须设置为库,并且导出必须是默认值(或者您必须使用 new app.default({...}) 实例化)
从 svelte 模板编辑的 webpack 配置:
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'
},
...