Skip to content

Commit a553514

Browse files
committed
Add example of how to use CSS variables
1 parent e73eec9 commit a553514

File tree

5 files changed

+50
-24
lines changed

5 files changed

+50
-24
lines changed

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@
4747
"metro-react-native-babel-preset": "^0.53.1",
4848
"node-sass": "^4.11.0",
4949
"postcss": "^7.0.14",
50+
"postcss-css-variables": "^0.12.0",
5051
"postcss-loader": "^3.0.0",
5152
"react-hot-loader": "3.1.3",
52-
"react-native-typed-css-transformer": "^0.10.2",
53-
"react-native-typed-sass-transformer": "^0.11.0",
53+
"react-native-sass-transformer": "^1.4.0",
54+
"react-native-typed-postcss-transformer": "^0.10.2",
5455
"react-test-renderer": "16.6.3",
5556
"sass-loader": "^7.1.0",
5657
"style-loader": "^0.23.1",
@@ -97,7 +98,7 @@
9798
},
9899
"postcss": {
99100
"plugins": {
100-
"autoprefixer": {}
101+
"postcss-css-variables": {}
101102
}
102103
},
103104
"eslintConfig": {

rn-transformer.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
var upstreamTransformer = require("metro/src/reactNativeTransformer");
2-
var sassTransformer = require("react-native-typed-sass-transformer");
3-
var cssTransformer = require("react-native-typed-css-transformer");
2+
var sassTransformer = require("react-native-sass-transformer");
3+
var postCSSTransformer = require("react-native-typed-postcss-transformer");
44

55
module.exports.transform = function({ src, filename, options }) {
66
if (filename.endsWith(".scss")) {
7-
return sassTransformer.transform({ src, filename, options });
7+
return sassTransformer
8+
.renderToCSS({ src, filename, options })
9+
.then(css =>
10+
postCSSTransformer.transform({ src: css, filename, options })
11+
);
812
} else if (filename.endsWith(".css")) {
9-
return cssTransformer.transform({ src, filename, options });
13+
return postCSSTransformer.transform({ src, filename, options });
1014
} else {
1115
return upstreamTransformer.transform({ src, filename, options });
1216
}

src/Link.css

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1+
:root {
2+
--text-color: #212529;
3+
--link-color: blue;
4+
}
5+
16
.description {
27
margin-bottom: 12px;
38
}
49

510
.descriptionText {
6-
color: #212529;
11+
color: var(--text-color);
712
}
813

914
.descriptionLink {
10-
color: blue;
15+
color: var(--link-color);
1116
}

webpack.config.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const webpack = require("webpack");
22
const path = require("path");
3+
const autoprefixer = require("autoprefixer");
34

45
var babelLoader = {
56
loader: "babel-loader",
@@ -70,7 +71,10 @@ module.exports = {
7071
}
7172
},
7273
{
73-
loader: "postcss-loader"
74+
loader: "postcss-loader",
75+
options: {
76+
plugins: () => [autoprefixer()]
77+
}
7478
}
7579
]
7680
},
@@ -93,7 +97,10 @@ module.exports = {
9397
}
9498
},
9599
{
96-
loader: "postcss-loader"
100+
loader: "postcss-loader",
101+
options: {
102+
plugins: () => [autoprefixer()]
103+
}
97104
},
98105
{
99106
loader: "sass-loader"

yarn.lock

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3992,7 +3992,7 @@ escape-html@~1.0.3:
39923992
version "1.0.3"
39933993
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
39943994

3995-
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
3995+
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3, escape-string-regexp@^1.0.5:
39963996
version "1.0.5"
39973997
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
39983998

@@ -4311,7 +4311,7 @@ extend@^3.0.0:
43114311
version "3.0.1"
43124312
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
43134313

4314-
extend@~3.0.2:
4314+
extend@^3.0.1, extend@~3.0.2:
43154315
version "3.0.2"
43164316
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
43174317

@@ -8019,6 +8019,15 @@ posix-character-classes@^0.1.0:
80198019
version "0.1.1"
80208020
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
80218021

8022+
postcss-css-variables@^0.12.0:
8023+
version "0.12.0"
8024+
resolved "https://registry.yarnpkg.com/postcss-css-variables/-/postcss-css-variables-0.12.0.tgz#0137b6ff15fb051bd29b36eabfea03472ccdd14c"
8025+
integrity sha512-fSgIfR+g/kZ2GeV3GH7wyNslDi7KH/Z+zwtHdEcmHv86mu+o71va9r9rqFLPR0VKi2BzoQZbCyw89oXK/XevIQ==
8026+
dependencies:
8027+
escape-string-regexp "^1.0.3"
8028+
extend "^3.0.1"
8029+
postcss "^6.0.8"
8030+
80228031
postcss-html@^0.36.0:
80238032
version "0.36.0"
80248033
resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204"
@@ -8178,7 +8187,7 @@ postcss@^6.0.1:
81788187
source-map "^0.6.1"
81798188
supports-color "^5.4.0"
81808189

8181-
postcss@^6.0.23:
8190+
postcss@^6.0.23, postcss@^6.0.8:
81828191
version "6.0.23"
81838192
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
81848193
integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
@@ -8507,22 +8516,22 @@ react-native-known-styling-properties@^1.0.5:
85078516
resolved "https://registry.yarnpkg.com/react-native-known-styling-properties/-/react-native-known-styling-properties-1.0.5.tgz#dd99690d579c5136541e1df836e75088af6e7356"
85088517
integrity sha512-PKRW5v9Um2/7mIaUy2fxg3XugP/QyVoqnzpnkY6AUTIlfyC2c/PeEhDwEVJgTotWiFCIj2lUACQ2lsG5zp0NUQ==
85098518

8510-
react-native-typed-css-transformer@^0.10.2:
8511-
version "0.10.2"
8512-
resolved "https://registry.yarnpkg.com/react-native-typed-css-transformer/-/react-native-typed-css-transformer-0.10.2.tgz#a3de30634443b492dadb7fb832c930ae4ee74d31"
8513-
integrity sha512-dSr0zH+KwdmC4KmibX89z5KTv2TEdyDwRQY60m61PwL/SMiGGGRcF0hRQZFBSs+mBaZ6sBDzwbrSkmA46p+x0A==
8519+
react-native-sass-transformer@^1.4.0:
8520+
version "1.4.0"
8521+
resolved "https://registry.yarnpkg.com/react-native-sass-transformer/-/react-native-sass-transformer-1.4.0.tgz#1b6a1ed6f2b6338ba42f2a46afd1f23f9ada3439"
8522+
integrity sha512-PlRiaJIcDzYpIVDH0OQuabkMGy/zp7N/A14rqhBrFqhADXC0xR2W53Cb7CicL9CsOL4y7Sh2dv4pgMvqgMdwqQ==
85148523
dependencies:
8524+
app-root-path "^2.1.0"
85158525
css-to-react-native-transform "^1.8.1"
85168526
semver "^5.6.0"
8517-
typed-css-modules "^0.3.7"
85188527

8519-
react-native-typed-sass-transformer@^0.11.0:
8520-
version "0.11.0"
8521-
resolved "https://registry.yarnpkg.com/react-native-typed-sass-transformer/-/react-native-typed-sass-transformer-0.11.0.tgz#8b51a83d338bc50f01613724b5eb406ace653dd4"
8522-
integrity sha512-mECGldsTNzb0j3qrEde3Qle3y4gjY1YLuHriDPRFJs3WTPN/FEGB9ModendoX2syoTTK+z2JPrQ3QeQJh93THw==
8528+
react-native-typed-postcss-transformer@^0.10.2:
8529+
version "0.10.2"
8530+
resolved "https://registry.yarnpkg.com/react-native-typed-postcss-transformer/-/react-native-typed-postcss-transformer-0.10.2.tgz#0a84d8c3ad9335ecebb1c66c8a025d01aabf5567"
8531+
integrity sha512-P/E7g2zTK/z3g83p2cvN3zIpcaN2XWtRKi2U3LvsJ8TzTULAEwtZpvmUEUauxdRLl4jz6iGC2a9yDKFyYj22aA==
85238532
dependencies:
8524-
app-root-path "^2.1.0"
85258533
css-to-react-native-transform "^1.8.1"
8534+
postcss-load-config "^2.0.0"
85268535
semver "^5.6.0"
85278536
typed-css-modules "^0.3.7"
85288537

0 commit comments

Comments
 (0)