Skip to content

Commit 9d70b78

Browse files
refactor: code and tests (webpack-contrib#947)
1 parent 4781d81 commit 9d70b78

5 files changed

+1053
-3413
lines changed

src/index.js

+27-23
Original file line numberDiff line numberDiff line change
@@ -117,54 +117,58 @@ export default function loader(content, map, meta) {
117117
exportOnlyLocals
118118
);
119119

120-
const exports = getExports(
120+
const exportItems = getExports(
121121
messages,
122122
exportLocalsStyle,
123123
importItemReplacer
124124
);
125125

126+
const exportsCode =
127+
exportItems.length > 0
128+
? exportOnlyLocals
129+
? `module.exports = {\n${exportItems.join(',\n')}\n};`
130+
: `// Exports\nexports.locals = {\n${exportItems.join(',\n')}\n};`
131+
: '';
132+
126133
if (exportOnlyLocals) {
127-
return callback(
128-
null,
129-
exports.length > 0
130-
? `module.exports = {\n${exports.join(',\n')}\n};`
131-
: ''
132-
);
134+
return callback(null, exportsCode);
133135
}
134136

135137
let cssAsString = JSON.stringify(result.css).replace(
136138
placholderRegExps.importItemG,
137139
importItemReplacer
138140
);
139141

140-
const imports = getImports(messages, importPrefix, this, (message) => {
141-
if (message.type !== 'url') {
142-
return;
143-
}
142+
const importItems = getImports(
143+
messages,
144+
importPrefix,
145+
this,
146+
(message) => {
147+
if (message.type !== 'url') {
148+
return;
149+
}
144150

145-
const { placeholder } = message.item;
151+
const { placeholder } = message.item;
146152

147-
cssAsString = cssAsString.replace(
148-
new RegExp(placeholder, 'g'),
149-
() => `" + ${placeholder} + "`
150-
);
151-
});
153+
cssAsString = cssAsString.replace(
154+
new RegExp(placeholder, 'g'),
155+
() => `" + ${placeholder} + "`
156+
);
157+
}
158+
);
152159

153160
const runtimeCode = `exports = module.exports = require(${stringifyRequest(
154161
this,
155162
require.resolve('./runtime/api')
156163
)})(${!!sourceMap});\n`;
157164
const importCode =
158-
imports.length > 0 ? `// Imports\n${imports.join('\n')}\n\n` : '';
165+
importItems.length > 0
166+
? `// Imports\n${importItems.join('\n')}\n\n`
167+
: '';
159168
const moduleCode = `// Module\nexports.push([module.id, ${cssAsString}, ""${
160169
result.map ? `,${result.map}` : ''
161170
}]);\n\n`;
162-
const exportsCode =
163-
exports.length > 0
164-
? `// Exports\nexports.locals = {\n${exports.join(',\n')}\n};`
165-
: '';
166171

167-
// Embed runtime
168172
return callback(
169173
null,
170174
runtimeCode + importCode + moduleCode + exportsCode
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`modules true (mode: local): errors 1`] = `Array []`;
4+
5+
exports[`modules true (mode: local): module 1`] = `
6+
"module.exports = {
7+
\\"v-def\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"v-def\\"] + \\"\\",
8+
\\"v-other\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"v-other\\"] + \\"\\",
9+
\\"s-white\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"s-white\\"] + \\"\\",
10+
\\"m-small\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./values.css\\")[\\"m-small\\"] + \\"\\",
11+
\\"v-something\\": \\"\\" + require(\\"-!../../../src/index.js??ref--4-0!./something.css\\")[\\"v-something\\"] + \\"\\",
12+
\\"v-foo\\": \\"blue\\",
13+
\\"v-bar\\": \\"block\\",
14+
\\"v-primary\\": \\"#BF4040\\",
15+
\\"s-black\\": \\"black-selector\\",
16+
\\"m-large\\": \\"(min-width: 960px)\\",
17+
\\"ghi\\": \\"_ghi\\",
18+
\\"class\\": \\"_class\\",
19+
\\"other\\": \\"_other\\",
20+
\\"other-other\\": \\"_other-other\\",
21+
\\"green\\": \\"_green\\",
22+
\\"foo\\": \\"_foo\\",
23+
\\"simple\\": \\"_simple \\" + require(\\"-!../../../src/index.js??ref--4-0!./imported-simple.css\\")[\\"imported-simple\\"] + \\"\\",
24+
\\"relative\\": \\"_relative \\" + require(\\"-!../../../src/index.js??ref--4-0!./relative.css\\")[\\"imported-relative\\"] + \\"\\",
25+
\\"top-relative\\": \\"_top-relative \\" + require(\\"-!../../../src/index.js??ref--4-0!../modules/top-relative.css\\")[\\"imported-relative\\"] + \\"\\",
26+
\\"module\\": \\"_module \\" + require(\\"-!../../../src/index.js??ref--4-0!package/style.css\\")[\\"imported-module\\"] + \\"\\",
27+
\\"alias\\": \\"_alias \\" + require(\\"-!../../../src/index.js??ref--4-0!aliasesComposes/alias.css\\")[\\"imported-alias\\"] + \\"\\",
28+
\\"primary-selector\\": \\"_primary-selector\\",
29+
\\"black-selector\\": \\"_black-selector\\",
30+
\\"header\\": \\"_header\\"
31+
};"
32+
`;
33+
34+
exports[`modules true (mode: local): values module 1`] = `
35+
"module.exports = {
36+
\\"v-def\\": \\"red\\",
37+
\\"v-other\\": \\"green\\",
38+
\\"s-white\\": \\"white\\",
39+
\\"m-small\\": \\"(min-width: 320px)\\"
40+
};"
41+
`;
42+
43+
exports[`modules true (mode: local): warnings 1`] = `Array []`;

0 commit comments

Comments
 (0)