Skip to content

Commit 0d1dd8b

Browse files
committed
Add external transform()
1 parent a756502 commit 0d1dd8b

File tree

4 files changed

+62
-66
lines changed

4 files changed

+62
-66
lines changed

dist/index.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@
22

33
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
44

5-
var rollupPluginutils = require('rollup-pluginutils');
6-
require('postcss');
7-
var fs = _interopDefault(require('fs'));
5+
var fs = _interopDefault(require('fs-extra'));
6+
var path = _interopDefault(require('path'));
7+
var utils = _interopDefault(require('rollup-pluginutils'));
88

99
var index = (opts) => {
1010

1111
let styles = {};
1212
let bundles = {};
1313

1414
const options = Object.assign({
15-
include: ['**/*.css']
15+
include: ['**/*.css'],
16+
transform: code => code
1617
}, opts);
1718

18-
const filter = rollupPluginutils.createFilter(options.include, options.exclude);
19+
const filter = utils.createFilter(options.include, options.exclude);
1920

2021
return {
2122
name: 'cssbundle',
@@ -25,9 +26,9 @@ var index = (opts) => {
2526
return await fs.readFile(id, 'utf8');
2627
},
2728

28-
transform(code, id) {
29+
async transform(code, id) {
2930
if (!filter(id)) return;
30-
styles[id] = code;
31+
styles[id] = await options.transform(code);
3132
return '';
3233
},
3334

@@ -40,8 +41,14 @@ var index = (opts) => {
4041
},
4142

4243
onwrite(opts) {
43-
let dest = options.file || opts.file.replace(/\.js$/, '.css');
44-
fs.writeFile(dest, bundles[opts.file]);
44+
fs.outputFile(
45+
options.output ||
46+
path.join(
47+
path.dirname(opts.file),
48+
path.basename(opts.file, path.extname(opts.file)) + '.css'
49+
),
50+
bundles[opts.file]
51+
);
4552
}
4653
}
4754
}

rollup.config.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import pkg from './package.json';
2+
3+
export default {
4+
input: 'src/index.js',
5+
output: {
6+
format: 'cjs',
7+
file: pkg.main,
8+
external: Object.keys(pkg.dependencies)
9+
}
10+
}

src/index.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
import { createFilter } from 'rollup-pluginutils';
2-
import postcss from 'postcss';
3-
import fs from 'fs';
1+
import fs from 'fs-extra';
2+
import path from 'path';
3+
import utils from 'rollup-pluginutils';
44

55
export default (opts) => {
66

77
let styles = {};
88
let bundles = {};
99

1010
const options = Object.assign({
11-
include: ['**/*.css']
11+
include: ['**/*.css'],
12+
transform: code => code
1213
}, opts);
1314

14-
const filter = createFilter(options.include, options.exclude);
15+
const filter = utils.createFilter(options.include, options.exclude);
1516

1617
return {
1718
name: 'cssbundle',
@@ -21,9 +22,9 @@ export default (opts) => {
2122
return await fs.readFile(id, 'utf8');
2223
},
2324

24-
transform(code, id) {
25+
async transform(code, id) {
2526
if (!filter(id)) return;
26-
styles[id] = code;
27+
styles[id] = await options.transform(code);
2728
return '';
2829
},
2930

@@ -36,8 +37,14 @@ export default (opts) => {
3637
},
3738

3839
onwrite(opts) {
39-
let dest = options.file || opts.file.replace(/\.js$/, '.css');
40-
fs.writeFile(dest, bundles[opts.file]);
40+
fs.outputFile(
41+
options.output ||
42+
path.join(
43+
path.dirname(opts.file),
44+
path.basename(opts.file, path.extname(opts.file)) + '.css'
45+
),
46+
bundles[opts.file]
47+
);
4148
}
4249
}
4350
}

yarn.lock

Lines changed: 20 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@
1010
version "9.6.6"
1111
resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.6.tgz#439b91f9caf3983cad2eef1e11f6bedcbf9431d2"
1212

13-
ansi-styles@^3.2.1:
14-
version "3.2.1"
15-
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
16-
dependencies:
17-
color-convert "^1.9.0"
18-
1913
arr-diff@^2.0.0:
2014
version "2.0.0"
2115
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -38,28 +32,6 @@ braces@^1.8.2:
3832
preserve "^0.2.0"
3933
repeat-element "^1.1.2"
4034

41-
chalk@^2.3.2:
42-
version "2.4.0"
43-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52"
44-
dependencies:
45-
ansi-styles "^3.2.1"
46-
escape-string-regexp "^1.0.5"
47-
supports-color "^5.3.0"
48-
49-
color-convert@^1.9.0:
50-
version "1.9.1"
51-
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
52-
dependencies:
53-
color-name "^1.1.1"
54-
55-
color-name@^1.1.1:
56-
version "1.1.3"
57-
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
58-
59-
escape-string-regexp@^1.0.5:
60-
version "1.0.5"
61-
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
62-
6335
estree-walker@^0.3.0:
6436
version "0.3.1"
6537
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
@@ -106,6 +78,14 @@ for-own@^0.1.4:
10678
dependencies:
10779
for-in "^1.0.1"
10880

81+
fs-extra@^5.0.0:
82+
version "5.0.0"
83+
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
84+
dependencies:
85+
graceful-fs "^4.1.2"
86+
jsonfile "^4.0.0"
87+
universalify "^0.1.0"
88+
10989
glob-base@^0.3.0:
11090
version "0.3.0"
11191
resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
@@ -119,9 +99,9 @@ glob-parent@^2.0.0:
11999
dependencies:
120100
is-glob "^2.0.0"
121101

122-
has-flag@^3.0.0:
123-
version "3.0.0"
124-
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
102+
graceful-fs@^4.1.2, graceful-fs@^4.1.6:
103+
version "4.1.11"
104+
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
125105

126106
is-buffer@^1.1.5:
127107
version "1.1.6"
@@ -181,6 +161,12 @@ isobject@^2.0.0:
181161
dependencies:
182162
isarray "1.0.0"
183163

164+
jsonfile@^4.0.0:
165+
version "4.0.0"
166+
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
167+
optionalDependencies:
168+
graceful-fs "^4.1.6"
169+
184170
kind-of@^3.0.2:
185171
version "3.2.2"
186172
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -233,14 +219,6 @@ parse-glob@^3.0.4:
233219
is-extglob "^1.0.0"
234220
is-glob "^2.0.0"
235221

236-
postcss@^6.0.21:
237-
version "6.0.21"
238-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.21.tgz#8265662694eddf9e9a5960db6da33c39e4cd069d"
239-
dependencies:
240-
chalk "^2.3.2"
241-
source-map "^0.6.1"
242-
supports-color "^5.3.0"
243-
244222
preserve@^0.2.0:
245223
version "0.2.0"
246224
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
@@ -284,12 +262,6 @@ rollup@^0.58.1:
284262
"@types/estree" "0.0.38"
285263
"@types/node" "*"
286264

287-
source-map@^0.6.1:
288-
version "0.6.1"
289-
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
290-
291-
supports-color@^5.3.0:
292-
version "5.4.0"
293-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
294-
dependencies:
295-
has-flag "^3.0.0"
265+
universalify@^0.1.0:
266+
version "0.1.1"
267+
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"

0 commit comments

Comments
 (0)