Skip to content

Commit fd41615

Browse files
Merge pull request michalkvasnicak#4 from jmurzy/jmurzy-module-resolution
fix bug in how modules are resolved
2 parents 1971e70 + 1fc9266 commit fd41615

File tree

3 files changed

+45
-6
lines changed

3 files changed

+45
-6
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
},
2626
"homepage": "https://github.com/michalkvasnicak/babel-plugin-css-modules-transform#readme",
2727
"dependencies": {
28-
"css-modules-require-hook": "^2.0.2"
28+
"css-modules-require-hook": "^3.0.0"
2929
},
3030
"devDependencies": {
3131
"babel-cli": "^6.1.18",
@@ -42,6 +42,8 @@
4242
"chai": "^3.4.1",
4343
"eslint": "^1.9.0",
4444
"eslint-config-airbnb-lite": "^1.0.0",
45+
"gulp-babel": "^6.1.2",
46+
"gulp-util": "^3.0.7",
4547
"mocha": "^2.3.4",
4648
"postcss": "^5.x",
4749
"postcss-modules-extract-imports": "^1.x",

src/index.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { resolve, dirname } from 'path';
1+
import { resolve, dirname, isAbsolute } from 'path';
22

33
const simpleRequires = [
44
'createImportedName',
@@ -17,6 +17,13 @@ const defaultOptions = {
1717
};
1818

1919
export default function transformCssModules({ types: t }) {
20+
function resolveModulePath(filename) {
21+
const dir = dirname(filename);
22+
if (isAbsolute(dir)) return dir;
23+
if (process.env.PWD) return resolve(process.env.PWD, dir);
24+
return resolve(dir);
25+
}
26+
2027
return {
2128
visitor: {
2229
CallExpression(path, { file, opts }) {
@@ -114,9 +121,8 @@ export default function transformCssModules({ types: t }) {
114121
);
115122
}
116123

117-
const tokens = require(
118-
resolve(process.cwd(), dirname(file.opts.filenameRelative), cssPath)
119-
);
124+
const from = resolveModulePath(file.opts.filename);
125+
const tokens = require(resolve(from, cssPath));
120126

121127
/* eslint-disable new-cap */
122128
path.replaceWith(t.ObjectExpression(

test/index.spec.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
const babel = require('babel-core');
22
import { expect } from 'chai';
3-
import { resolve } from 'path';
3+
import { resolve, join } from 'path';
44
import { readFileSync } from 'fs';
5+
import gulpUtil from 'gulp-util';
6+
import gulpBabel from 'gulp-babel';
57

68
describe('babel-plugin-css-modules-transform', () => {
79
function transform(path, configuration = {}) {
@@ -102,4 +104,33 @@ describe('babel-plugin-css-modules-transform', () => {
102104
expect(transform('fixtures/import.js').code).to.be.equal(readExpected('fixtures/import.expected.js'));
103105
});
104106

107+
it('should replace require call with hash of class name => css class name via gulp', (cb) => {
108+
const stream = gulpBabel({
109+
plugins: [
110+
'transform-strict-mode',
111+
'transform-es2015-parameters',
112+
'transform-es2015-destructuring',
113+
'transform-es2015-modules-commonjs',
114+
'transform-object-rest-spread',
115+
'transform-es2015-spread',
116+
'transform-export-extensions',
117+
['../src/index.js', {}]
118+
]
119+
});
120+
121+
stream.on('data', (file) => {
122+
expect(file.contents.toString()).to.be.equal(readExpected('fixtures/import.expected.js'));
123+
});
124+
125+
stream.on('end', cb);
126+
127+
stream.write(new gulpUtil.File({
128+
cwd: __dirname,
129+
base: join(__dirname, 'fixtures'),
130+
path: join(__dirname, 'fixtures/require.js'),
131+
contents: readFileSync(join(__dirname, 'fixtures/import.js'))
132+
}));
133+
134+
stream.end();
135+
});
105136
});

0 commit comments

Comments
 (0)