当前位置: 首页 > 知识库问答 >
问题:

在LitElement项目中使用@rollup/plugin-image输出svgs以与RollupJS捆绑

吴正祥
2023-03-14

我正在使用@rollup/plugin-image来帮助解决我的LitElement项目中的svg导入,推荐如下:https://github.com/rollup/plugins.我还在custom.d.ts中声明了'*. svg'模块,因为我使用的是打字稿。

问题是我不知道如何在rollup的捆绑输出中包含SVG文件,这意味着我的浏览器以后无法导入这些文件,我在控制台中看到401个错误。为了暂时解决这个问题,我只需在需要在自定义LitElement组件的render()函数中显示SVG的地方使用一个内联SVG标记。请帮我理解我错过了什么。

我当前的(简化的)汇总。配置。js:

// other imports ... 
import image from '@rollup/plugin-image';
const extensions = ['.js', '.ts'];
const commonPlugins = [
  json(),
  commonJS(),
  resolve({ module: true, jsnext: true, extensions }),
  postcss(),
  terser({ keep_classnames: true, keep_fnames: true }),
  **image(),** 
];
const babelPlugins = [
   ...
];
const babelInclude = [
   ...
];
const es6Bundle = {
  input: ['src/bundle/index.es6.ts'],
  output: {
    dir: 'dist/bundle',
    entryFileNames: 'index.js',
    format: 'iife',
    sourcemap: true,
  },
  plugins: [
    babel({
      extensions,
      presets: [
        [
          '@babel/preset-env',
          {
            targets: '>25%',
          },
        ],
        '@babel/typescript',
      ],
      plugins: babelPlugins,
      include: babelInclude,
    }),
    ...commonPlugins, // where image() gets included
  ],
};

export default [es6Bundle];

我的输出目录如下:dist/bundle/wc/*bundle of web组件。js文件*dist/bundle的内部有索引。js和索引。js。地图

我可能在这里混淆了不同的概念,如果是这样,我道歉。这是我第一次使用rollup和lit元素。

共有1个答案

柳豪
2023-03-14

问题是我不知道如何在rollup的捆绑输出中包含SVG文件,这意味着我的浏览器以后无法导入这些文件,我在控制台中看到401个错误

@rollup/plugin image的目的是让您在代码中内联图像,而不是在运行时导入它们,因此浏览器甚至不应该尝试加载它们。。。

应该是这样使用的:

import {html, LitElement, customElement} from 'lit-element';
import myImage from './image.svg';

@customElement('my-test')
export class MyTest extends LitElement {

  render() {
    return html`
      <img src="${myImage}">
      // Or like this, if the `dom` option
      // of the plugin is set to true:
      ${myImage}
    `;
  }

}

但是,如果可以的话,我不建议将SVG内联为base 64:与其他图像格式不同,它可以与超文本标记语言完全互操作,那么为什么要增加它的大小呢?有关此主题的更多信息,请参阅此处。

您可能想看看其他插件,例如rollup-plugin-svg,它允许您将SVG捆绑为标记。

 类似资料:
  • 我正在尝试使用rollup-plugin-multi-entry和rollup-plugin-uglify将相当多的JavaScript文件捆绑到一个缩小的文件中。我是缩小文件的新手,所以唯一引起注意的是,当我捆绑多个文件并将其缩小时,与捆绑单个文件并缩小该文件时相比,我的IDE主题不会改变代码的颜色。 单文件工作: 多个文件不起作用: 我使用的是一个汇总配置文件,当我在节点中运行脚本时,它不会抛

  • 我尝试捆绑两个JavaScript模块,以便生成的代码在IE11中工作。为此,我设置了一个yarn/npm项目,它使用rollup.js进行捆绑,使用Babel进行转置。在我添加(非开发)依赖之前,一切都很好。 这里的细节: src/main。js src/utils。js package.json rollup.config.js 巴贝尔。配置。js 当我运行时,我会收到关于未解析依赖项的警告,

  • 假设我正在构建一个依赖于react的webapp,一堆小型util库,然后拥有自己的代码。 捆绑代码时,我想把它分成3个捆绑包 react,react dom和其他类似react路由器dom的东西 虽然我可以使用rollup将代码绑定到一个文件中,并包含依赖项,但是否可以为1和2创建文件?

  • rollup-plugin-dev a development server for rollup why this plugin? compared to other plugins, this plugin: uses Fastify to provide the server and implement features while this means there are dependen

  • 我已经导出了我的Unity项目,以便能够使用MultiDex。问题是,当我已经为Fabric设置了“io.fabric.unity.android.fabricApplication”时,我必须将项目androidmanifest中的Android:name设置为“Android.support.multidex.multidexApplication”。 我发现有人也有类似的问题,但没有得到解决

  • This plugin enables the user to insert an image into TinyMCE’s editable area. The plugin also adds a toolbar button and an Insert/edit image menu item under the Insert menu. Type: String Example tinym