Skip to content

Commit 880fd8c

Browse files
committed
Merge pull request #40 from joeybaker/fix-32
Ensure caches are persisted
2 parents 81d1d33 + 194a6c6 commit 880fd8c

File tree

3 files changed

+66
-11
lines changed

3 files changed

+66
-11
lines changed

index.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,22 @@ function normalizeManifestPaths (tokensByFile, rootDir) {
3737
}
3838

3939
var cssExt = /\.css$/;
40+
41+
// caches
42+
//
43+
// persist these for as long as the process is running. #32
44+
45+
// keep track of css files visited
46+
var filenames = [];
47+
48+
// keep track of all tokens so we can avoid duplicates
49+
var tokensByFile = {};
50+
51+
// keep track of all source files for later builds: when
52+
// using watchify, not all files will be caught on subsequent
53+
// bundles
54+
var sourceByFile = {};
55+
4056
module.exports = function (browserify, options) {
4157
options = options || {};
4258

@@ -91,17 +107,6 @@ module.exports = function (browserify, options) {
91107
return plugin;
92108
});
93109

94-
// keep track of css files visited
95-
var filenames = [];
96-
97-
// keep track of all tokens so we can avoid duplicates
98-
var tokensByFile = {};
99-
100-
// keep track of all source files for later builds: when
101-
// using watchify, not all files will be caught on subsequent
102-
// bundles
103-
var sourceByFile = {};
104-
105110
function transform (filename) {
106111
// only handle .css files
107112
if (!cssExt.test(filename)) {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"devDependencies": {
1313
"browserify": "^11.0.1",
1414
"proxyquire": "^1.6.0",
15+
"rebundler": "^0.2.0",
1516
"tape": "^4.0.1"
1617
},
1718
"scripts": {

tests/cache.js

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
var tape = require('tape');
2+
3+
var browserify = require('browserify');
4+
var proxyquire = require('proxyquire');
5+
var fs = require('fs');
6+
var path = require('path');
7+
var rebundler = require('rebundler');
8+
9+
var casesDir = path.join(__dirname, 'cases');
10+
var simpleCaseDir = path.join(casesDir, 'simple');
11+
var cssOutFilename = 'out.css';
12+
13+
tape('multiple builds', function (t) {
14+
var fakeFs = {
15+
writeFile: function (filename, content, cb) {
16+
var expected = fs.readFileSync(path.join(simpleCaseDir, 'expected.css'), 'utf8');
17+
18+
t.equal(filename, cssOutFilename, 'correct output filename');
19+
t.equal(content, expected, 'output matches expected');
20+
cb();
21+
}
22+
};
23+
24+
var cssModulesify = proxyquire('../', {
25+
fs: fakeFs
26+
});
27+
28+
var getBundler = rebundler(function (cache, packageCache) {
29+
return browserify(path.join(simpleCaseDir, 'main.js'), {
30+
cache: cache
31+
, packageCache: packageCache
32+
, fullPaths: true
33+
})
34+
.plugin(cssModulesify, {
35+
rootDir: path.join(simpleCaseDir)
36+
, output: cssOutFilename
37+
});
38+
});
39+
40+
getBundler().bundle(function (err) {
41+
t.error(err, 'initial bundle without a cache does not error');
42+
43+
getBundler().bundle(function (err2) {
44+
t.error(err2, 'second pass bundle with a cache does not error');
45+
46+
t.end();
47+
});
48+
});
49+
});

0 commit comments

Comments
 (0)