【发布时间】:2019-08-14 20:07:26
【问题描述】:
我正在使用 litelement 构建一个 Web 组件。我从以下 repo 开始,它是项目设置的样板,包括作为捆绑器的汇总。
https://github.com/PolymerLabs/lit-element-build-rollup
我能够构建一个组件并使用它。现在我想构建一个包含图像的组件。我不知道如何处理这个。我不希望组件的消费者将图像路径作为属性传递。图像应与组件捆绑在一起。
mycomponent.js:
import {html, LitElement, css} from 'lit-element';
import logo from "./assets/mylogo.png";
class MyComponent extends LitElement {
static get styles() {
return [
css`
:host {
display: block;
}
`,
];
}
render() {
return html`
<div class="container">
<p>lorem ipsum</p>
<img src={ {logo} } />
<p>hello</p>
</div>
`;
}
}
customElements.define('my-component', MyComponent);
我的 VSCode 编辑器说,我没有使用我在第 2 行中导入的 logo。当我在构建组件后尝试使用该组件时,图像没有出现,并且看起来像是在错误地寻找它路径。
我添加了https://github.com/rollup/rollup-plugin-image插件,并在rollup.config.js中进行了配置,如下所示:
import resolve from 'rollup-plugin-node-resolve';
import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';
import postcss from 'rollup-plugin-postcss';
import image from 'rollup-plugin-img';
export default ['MyComponent'].map((name, index) => ({
input: `src/components/${name}.js`,
output: {
// file: 'build/index.js',
format: 'iife',
sourcemap: true,
name,
dir: 'build/public'
},
plugins: [
postcss({
extensions: ['.css'],
}),
resolve(),
commonjs(),
babel(),
image({
output: `build/public/assets`,
})
]
}));
有没有人有将资产(即图像)捆绑到 Web 组件中的示例?
【问题讨论】:
标签: web-component rollupjs lit-element