Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hook for subresource integrity #40

Open
jscheid opened this issue Mar 16, 2018 · 5 comments

Comments

@jscheid
Copy link

commented Mar 16, 2018

Hi, I'm maintaining webpack-subresource-integrity and I'd like to help make the two plugins work together, to ensure integrity for injected link rel="stylesheet" tags.

For this there would need to be a way for our plugin to add attributes (integrity and crossorigin) somewhere around here.

One approach could be a hook that receives an object with the tag name and all attributes. rel and href would be needed by our plugin, but I guess for completeness it should also include onload and onerror. It would return an object with the same structure. The code would then look something like this:

let tag = {
    tagName: 'link',
    attributes: {
        rel: '"stylesheet"',
        onload: 'resolve',
        onerror: 'reject',
        href: `${mainTemplate.requireFn}.p + ${linkHrefPath}`,
    }
};

// up for debate where this hook would be declared, what name to use,
// how to handle backward compatibility etc.
if (compilation.hooks.mutateInjectedTag) {
    tag = compilation.hooks.mutateInjectedTag.call(tag);
}

Template.indent([
    `var el = document.createElement(${JSON.stringify(tag.tagName)})`
].concat(Object.entries(tag.attributes).map(([name, value]) => (
    `el[${JSON.stringify(name)}] = ${value}`
))).concat([
    "...",
]);

This aims to be generic, so that it could be used for other plugins that inject tags or that want to modify injected tags.

It's just a suggestion of course, there are other approaches that would also work. But first, what do you think of the general idea, would you accept a PR for this?

@evilebottnawi

This comment has been minimized.

Copy link
Member

commented Mar 20, 2018

@jscheid PR welcome 👍

@michael-ciniawsky

This comment has been minimized.

Copy link
Member

commented Mar 20, 2018

At best this would be usable as generic hook to add code to the JS side of affairs (e.g for HMR aswell)

@josephliccini

This comment has been minimized.

Copy link

commented Jun 11, 2019

This feature would be great, is it still on the roadmap for this plugin?

@jahed

This comment has been minimized.

Copy link
Contributor

commented Jul 8, 2019

It's been a while so just wanted to know, is the approach still agreed upon? i.e. using compilation.hooks.mutateInjectedTag?

@ScriptedAlchemy

This comment has been minimized.

Copy link
Contributor

commented Jul 8, 2019

I wouldn't mind seeing this implemented. If i have the time ill look at doing so

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
6 participants
You can’t perform that action at this time.