Skip to content

Commit 29cd843

Browse files
committed
CSS Next Support and Prefixing via postcss-preset-env #1
1 parent d8dc4c4 commit 29cd843

File tree

7 files changed

+59
-3
lines changed

7 files changed

+59
-3
lines changed

lib/make-postcss.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
let path = require("path");
12
let postcss = require("postcss");
23
let atImport = require("postcss-import");
4+
let postcssPresetEnv = require("postcss-preset-env");
35
let assetURL = require("./asset-url");
4-
let { promisify } = require("faucet-pipeline-core/lib/util");
6+
let { repr, promisify } = require("faucet-pipeline-core/lib/util");
57
let readFile = promisify(require("fs").readFile);
68

79
module.exports = function(input, target, assetManager, sourcemaps, browsers, compact) {
@@ -17,6 +19,18 @@ module.exports = function(input, target, assetManager, sourcemaps, browsers, com
1719
);
1820
}
1921

22+
if(browsers && browsers.length > 0) {
23+
let filepath = path.relative(assetManager.referenceDir, input);
24+
console.error(`compiling CSS ${repr(filepath)} for ${browsers.join(", ")}`);
25+
plugins.push(postcssPresetEnv({
26+
stage: 2, // maybe a little too unstable?
27+
browsers: browsers,
28+
autoprefixer: {
29+
cascade: false // this disables weird indentation
30+
}
31+
}));
32+
}
33+
2034
let processor = postcss(plugins);
2135

2236
let options = {

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@
2424
"postcss-discard-comments": "~5.0.1",
2525
"postcss-import": "~14.0.2",
2626
"postcss-message-helpers": "~2.0.0",
27-
"postcss-normalize-whitespace": "~5.0.1"
27+
"postcss-normalize-whitespace": "~5.0.1",
28+
"postcss-preset-env": "^6.0.7"
2829
},
2930
"devDependencies": {
3031
"eslint-config-fnd": "^1.6.0",
31-
"eslint-plugin-import": "^2.13.0",
32+
"eslint-plugin-import": "^2.15.0",
3233
"faucet-pipeline-static": "^1.0.0",
3334
"json-diff": "^0.7.1",
3435
"npm-run-all": "^4.1.5",

test/run

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,9 @@ begin "$root/test_static_integration"
3939
assert_identical "./dist/bundle.css" "./expected.css"
4040
end
4141

42+
begin "$root/test_cssnext"
43+
faucet
44+
assert_identical "./dist/bundle.css" "./expected.css"
45+
end
46+
4247
echo; echo "SUCCESS: all tests passed"

test/test_cssnext/.browserslistrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
IE 10

test/test_cssnext/expected.css

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
:root {
2+
--fontSize: 1rem;
3+
}
4+
5+
body {
6+
font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif;
7+
font-size: 1rem;
8+
font-size: var(--fontSize);
9+
-ms-user-select: none;
10+
user-select: none;
11+
}

test/test_cssnext/faucet.config.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use strict";
2+
let path = require("path");
3+
4+
module.exports = {
5+
css: [{
6+
source: "./src/index.css",
7+
target: "./dist/bundle.css"
8+
}],
9+
plugins: {
10+
css: {
11+
plugin: path.resolve("../.."),
12+
bucket: "styles"
13+
}
14+
}
15+
};

test/test_cssnext/src/index.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
:root {
2+
--fontSize: 1rem;
3+
}
4+
5+
body {
6+
font-family: system-ui;
7+
font-size: var(--fontSize);
8+
user-select: none;
9+
}

0 commit comments

Comments
 (0)