|
5 | 5 |
|
6 | 6 | "use strict"; |
7 | 7 |
|
| 8 | +const mime = require("mime-types"); |
8 | 9 | const { basename, extname } = require("path"); |
9 | 10 | const util = require("util"); |
10 | 11 | const Chunk = require("./Chunk"); |
@@ -117,29 +118,53 @@ const replacePathVariables = (path, data, assetInfo) => { |
117 | 118 | // [name] - file |
118 | 119 | // [ext] - .js |
119 | 120 | if (typeof data.filename === "string") { |
120 | | - const { path: file, query, fragment } = parseResource(data.filename); |
121 | | - |
122 | | - const ext = extname(file); |
123 | | - const base = basename(file); |
124 | | - const name = base.slice(0, base.length - ext.length); |
125 | | - const path = file.slice(0, file.length - base.length); |
126 | | - |
127 | | - replacements.set("file", replacer(file)); |
128 | | - replacements.set("query", replacer(query, true)); |
129 | | - replacements.set("fragment", replacer(fragment, true)); |
130 | | - replacements.set("path", replacer(path, true)); |
131 | | - replacements.set("base", replacer(base)); |
132 | | - replacements.set("name", replacer(name)); |
133 | | - replacements.set("ext", replacer(ext, true)); |
134 | | - // Legacy |
135 | | - replacements.set( |
136 | | - "filebase", |
137 | | - deprecated( |
138 | | - replacer(base), |
139 | | - "[filebase] is now [base]", |
140 | | - "DEP_WEBPACK_TEMPLATE_PATH_PLUGIN_REPLACE_PATH_VARIABLES_FILENAME" |
141 | | - ) |
142 | | - ); |
| 121 | + // check that filename is data uri |
| 122 | + let match = data.filename.match(/^data:([^;,]+)/); |
| 123 | + if (match) { |
| 124 | + const ext = mime.extension(match[1]); |
| 125 | + const emptyReplacer = replacer("", true); |
| 126 | + |
| 127 | + replacements.set("file", emptyReplacer); |
| 128 | + replacements.set("query", emptyReplacer); |
| 129 | + replacements.set("fragment", emptyReplacer); |
| 130 | + replacements.set("path", emptyReplacer); |
| 131 | + replacements.set("base", emptyReplacer); |
| 132 | + replacements.set("name", emptyReplacer); |
| 133 | + replacements.set("ext", replacer(ext ? `.${ext}` : "", true)); |
| 134 | + // Legacy |
| 135 | + replacements.set( |
| 136 | + "filebase", |
| 137 | + deprecated( |
| 138 | + emptyReplacer, |
| 139 | + "[filebase] is now [base]", |
| 140 | + "DEP_WEBPACK_TEMPLATE_PATH_PLUGIN_REPLACE_PATH_VARIABLES_FILENAME" |
| 141 | + ) |
| 142 | + ); |
| 143 | + } else { |
| 144 | + const { path: file, query, fragment } = parseResource(data.filename); |
| 145 | + |
| 146 | + const ext = extname(file); |
| 147 | + const base = basename(file); |
| 148 | + const name = base.slice(0, base.length - ext.length); |
| 149 | + const path = file.slice(0, file.length - base.length); |
| 150 | + |
| 151 | + replacements.set("file", replacer(file)); |
| 152 | + replacements.set("query", replacer(query, true)); |
| 153 | + replacements.set("fragment", replacer(fragment, true)); |
| 154 | + replacements.set("path", replacer(path, true)); |
| 155 | + replacements.set("base", replacer(base)); |
| 156 | + replacements.set("name", replacer(name)); |
| 157 | + replacements.set("ext", replacer(ext, true)); |
| 158 | + // Legacy |
| 159 | + replacements.set( |
| 160 | + "filebase", |
| 161 | + deprecated( |
| 162 | + replacer(base), |
| 163 | + "[filebase] is now [base]", |
| 164 | + "DEP_WEBPACK_TEMPLATE_PATH_PLUGIN_REPLACE_PATH_VARIABLES_FILENAME" |
| 165 | + ) |
| 166 | + ); |
| 167 | + } |
143 | 168 | } |
144 | 169 |
|
145 | 170 | // Compilation context |
|
0 commit comments