Skip to content

Commit 40042ec

Browse files
committed
CSS Next Support and Prefixing via postcss-preset-env #1
1 parent 149675d commit 40042ec

File tree

7 files changed

+62
-8
lines changed

7 files changed

+62
-8
lines changed

lib/make-postcss.js

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,28 @@
1+
let path = require("path");
12
let postcss = require("postcss");
23
let atImport = require("postcss-import");
3-
let { promisify } = require("faucet-pipeline-core/lib/util");
4+
let postcssPresetEnv = require("postcss-preset-env");
5+
let { repr, promisify } = require("faucet-pipeline-core/lib/util");
46
let readFile = promisify(require("fs").readFile);
57

68
module.exports = function(input, target, assetManager, sourcemaps, browsers) {
7-
// if(browsers && browsers.length > 0) {
8-
// let filepath = path.relative(assetManager.referenceDir, input);
9-
// console.error(`compiling CSS ${repr(filepath)} for ${browsers.join(", ")}`);
10-
11-
let processor = postcss([
9+
let plugins = [
1210
atImport()
13-
]);
11+
];
12+
13+
if(browsers && browsers.length > 0) {
14+
let filepath = path.relative(assetManager.referenceDir, input);
15+
console.error(`compiling CSS ${repr(filepath)} for ${browsers.join(", ")}`);
16+
plugins.push(postcssPresetEnv({
17+
stage: 2, // maybe a little too unstable?
18+
browsers: browsers,
19+
autoprefixer: {
20+
cascade: false // this disables weird indentation
21+
}
22+
}));
23+
}
24+
25+
let processor = postcss(plugins);
1426

1527
let options = {
1628
from: input,

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"dependencies": {
2222
"faucet-pipeline-core": "^1.0.0",
2323
"postcss": "~7.0.3",
24-
"postcss-import": "^12.0.0"
24+
"postcss-import": "^12.0.0",
25+
"postcss-preset-env": "^6.0.7"
2526
},
2627
"devDependencies": {
2728
"eslint-config-fnd": "^1.6.0",

test/run

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,9 @@ begin "$root/test_sourcemap"
2929
assert_identical_sourcemap "./dist/bundle.css" "./expected.css" "./expected.css.map"
3030
end
3131

32+
begin "$root/test_cssnext"
33+
faucet
34+
assert_identical "./dist/bundle.css" "./expected.css"
35+
end
36+
3237
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)