如何在汇总中处理 svg 导入 (ES6)

Maf*_*elu 13 javascript svg rollup node.js

如果我将 svg 文件导入到 ES6 模块中,如何在汇总中处理它?我目前有这样的事情(我正在做的简单例子):

import next from '../assets/next.svg';
export default () => console.log('Here is some Svg: ! ', next);
Run Code Online (Sandbox Code Playgroud)

我有一个如下所示的汇总配置:

import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';

export default {
  entry: 'src/app.js',
  dest: 'build/app.min.js',
  format: 'iife',
  sourceMap: 'inline',
  plugins: [
    babel({
      exclude: 'node_modules/**',
    }),
    resolve({
      jsnext: true,
      main: true,
      browser: true,
    }),
    commonjs(),
  ],
};
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

无法解析 /home/magnferm/projects/slask/rollup-test/src/chill/index.js 中的“../assets/next.svg”

路径没有问题,但 rollup 似乎不知道如何处理 svg 文件。有没有我可以使用的插件,或者我是否必须以某种方式区别对待它?

Maf*_*elu 16

有一个插件。它称为@rollup/plugin-image,它可以处理 .svg 等格式的导入:

import babel from '@rollup/plugin-babel';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import image from '@rollup/plugin-image';

export default {
  entry: 'src/app.js',
  dest: 'build/appn.min.js',
  format: 'iife',
  sourceMap: 'inline',
  plugins: [
    babel({
      exclude: 'node_modules/**',
    }),
    resolve({
      jsnext: true,
      main: true,
      browser: true,
    }),
    commonjs(),
    image()
  ],
};
Run Code Online (Sandbox Code Playgroud)