Giter Site home page Giter Site logo

Comments (4)

bensampaio avatar bensampaio commented on July 29, 2024 1

This is something I could add to the documentation. I'm happy you could fix the problem in the end and that it made sense. I'll close the issue and add this to my todos :)

from external-svg-sprite-loader.

bensampaio avatar bensampaio commented on July 29, 2024

@mnpenner interpolateName is already being used. You should be able to specify a name / path with a hash. If that's not working could you please show me what's the path you are using?

from external-svg-sprite-loader.

mnpenner avatar mnpenner commented on July 29, 2024

Thanks for responding.

Here's how I configured the loader:

{
    loader: 'external-svg-sprite?name=[name]-[sha1:hash:hex:10].[ext]',
    test: /\.svg$/,
    include: path.resolve(assetsDir, 'icons'),
},

Which is exactly the same way I configured my url-loader. However, I get this error when I try to set the name option that way:

Error: Module build failed: TypeError: Cannot read property '0' of null
    at new SvgSprite (C:\Users\Mark\PhpstormProjects\project\node_modules\external-svg-sprite-loader\lib\SvgSprite.js:41:87)
    at Function.getSprite (C:\Users\Mark\PhpstormProjects\project\node_modules\external-svg-sprite-loader\lib\SvgStorePlugin.js:53:35)
    at imagemin.buffer.then (C:\Users\Mark\PhpstormProjects\project\node_modules\external-svg-sprite-loader\index.js:70:41)
    at DependenciesBlock.onModuleBuildFailed (C:\Users\Mark\PhpstormProjects\project\node_modules\webpack-core\lib\NormalModuleMixin.js:315:19)
    at nextLoader (C:\Users\Mark\PhpstormProjects\project\node_modules\webpack-core\lib\NormalModuleMixin.js:270:31)
    at C:\Users\Mark\PhpstormProjects\project\node_modules\webpack-core\lib\NormalModuleMixin.js:292:15
    at context.callback (C:\Users\Mark\PhpstormProjects\project\node_modules\webpack-core\lib\NormalModuleMixin.js:148:14)
    at imagemin.buffer.then.catch (C:\Users\Mark\PhpstormProjects\project\node_modules\external-svg-sprite-loader\index.js:86:13)

Works fine when I use a static name like "spritemap.svg".

I will try to dig a bit deeper to see where it's breaking.


It's breaking in SvgSprite.js:

class SvgSprite {

    /**
     * Initializes all sprite properties.
     * @param {string} resourcePath - the relative path for the sprite based on the output folder.
     */
    constructor(resourcePath) {
        const name = path.basename(resourcePath).match(/(?!\[[^[\]]*)\w+(?![^[\]]*])/)[0]; // <-- crashes here

resourcePath is [name]-[sha1:hash:hex:10].[ext] and the .match is returning null.

from external-svg-sprite-loader.

mnpenner avatar mnpenner commented on July 29, 2024

OK, I just realized I shouldn't have used [name] and [ext] in my name. It makes sense for url/file-loader because we have an input file to which those things refer, but external-svg-sprite-loader is creating a brand new image so those values aren't set.

It works fine with sprite-[sha1:hash:hex:10].svg, which is all I wanted. Sorry for wasting your time :-)

You can close this ticket unless you want to put in better error-handling for dummies like me.

from external-svg-sprite-loader.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.