Skip to content

Commit c394131

Browse files
author
Alexey Litvinov
committed
added css exports
1 parent c2c46a4 commit c394131

File tree

5 files changed

+58
-1
lines changed

5 files changed

+58
-1
lines changed

readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ into:
2727

2828
## Options
2929

30+
`explicitExports` `boolean`
31+
3032
`resolve` `object`
3133

3234
`resolve.alias` `object`

sync.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ module.exports = plugin('postcss-modules-resolve-imports', resolveImportsPlugin)
1818

1919
/**
2020
* dangerouslyPrevailCyclicDepsWarnings
21+
* explicitExports
2122
* resolve.alias
2223
* resolve.extensions
24+
* resolve.modules
2325
*/
24-
function resolveImportsPlugin({resolve = {}} = {}) {
26+
function resolveImportsPlugin({explicitExports, resolve = {}} = {}) {
2527
return resolveImports;
2628

2729
function resolveImports(ast, result) {
@@ -32,6 +34,19 @@ function resolveImportsPlugin({resolve = {}} = {}) {
3234

3335
resolveDeps(ast, {opts: {from: rootPath, graph, resolve, rootPath, rootTree}, processor});
3436

37+
if (explicitExports) {
38+
const exportRule = postcss.rule({selector: ':export'});
39+
40+
for (const className in ast.exports)
41+
exportRule.append({
42+
prop: className,
43+
value: ast.exports[className],
44+
raws: {before: '\n '},
45+
});
46+
47+
rootTree.prepend(exportRule);
48+
}
49+
3550
rootTree.exports = ast.exports;
3651
result.root = rootTree;
3752
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
:export {
2+
continueButton: _source_continueButton;
3+
userInput: _source_userInput
4+
}
5+
._source_continueButton {
6+
color: green
7+
}
8+
._source_userInput {
9+
/**/
10+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.continueButton
2+
{
3+
color: green;
4+
}
5+
6+
.userInput
7+
{
8+
/**/
9+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'use strict';
2+
3+
const resolveImports = require('../../../index');
4+
const setup = require('../../setup');
5+
const test = require('tape');
6+
7+
test('resolve-readme-example', t => {
8+
const {expected, resulting, exports: tokens} = setup(
9+
'local-by-default',
10+
'extract-imports',
11+
'scope',
12+
resolveImports({explicitExports: true})
13+
)(__dirname);
14+
15+
t.equal(resulting.trim(), expected.trim());
16+
t.deepEqual(tokens, {
17+
continueButton: '_source_continueButton',
18+
userInput: '_source_userInput',
19+
});
20+
t.end();
21+
});

0 commit comments

Comments
 (0)