babel-plugin-istanbul
babel-plugin-istanbul copied to clipboard
Does not work with babel-plugin-import
Hi,
when combining this plugin with babel-plugin-import, the compilation drops import/require statements. For example,
import { Table, Input } from "antd";
const { Column } = Table;
const { Search } = Input;
with this .babelrc:
{
...
plugins: [
["import", { libraryName: "antd" }],
"istanbul"
],
}
results in this output:
"use strict";
var cov_hq3awr3ym = function () {
var path = "...",
hash = "a233b011d34ec8bb2cd83adfac23c4ca7cdfbed9",
Function = function () {}.constructor,
global = new Function('return this')(),
gcv = "__coverage__",
coverageData = {
path: "...",
statementMap: {
"0": {
start: {
line: 3,
column: 19
},
end: {
line: 3,
column: 24
}
},
"1": {
start: {
line: 4,
column: 19
},
end: {
line: 4,
column: 24
}
}
},
fnMap: {},
branchMap: {},
s: {
"0": 0,
"1": 0
},
f: {},
b: {},
_coverageSchema: "332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"
},
coverage = global[gcv] || (global[gcv] = {});
if (coverage[path] && coverage[path].hash === hash) {
return coverage[path];
}
coverageData.hash = hash;
return coverage[path] = coverageData;
}();
var _ref = (cov_hq3awr3ym.s[0]++, Table);
const Column = _ref.Column;
var _ref2 = (cov_hq3awr3ym.s[1]++, Input);
const Search = _ref2.Search;
where Table
and Input
are never defined.
It looks like babel-plugin-import is a Babel 7 plugin. If you haven't already please try this with babel-plugin-istanbul@next
(version 5.x). The current latest
release of babel-plugin-istanbul
still uses babel 6.
This would be easier to investigate if you could provide a small repo demonstrating the issue.
It looks like babel-plugin-import is a Babel 7 plugin.
What makes you think so? Since v1.6.0, the plugin is compatible with Babel 7, but support wasn't dropped as far as I know.
If you haven't already please try this with babel-plugin-istanbul@next (version 5.x). The current latest release of babel-plugin-istanbul still uses babel 6.
My project uses babel 6, which is why I assume this won't fix the bug?
This would be easier to investigate if you could provide a small repo demonstrating the issue.
Ok, I'll try to get some time for that.
https://github.com/ant-design/babel-plugin-import/blob/master/src/Plugin.js#L2 shows that it uses babel 7 modules. I do not recommend mixing babel 6 and babel 7, so if your project uses babel 6 I recommend trying again with "babel-plugin-import": "=1.5.0"
for your dependency in package.json (pin to the last release before they started work on babel 7).
Still has this problem when I use babel 7 and [email protected]
a small repo demonstrating the issue: https://github.com/yutingzhao1991/istanbul-import-bugreport
see https://github.com/yutingzhao1991/istanbul-import-bugreport/blob/master/lib/index.js#L53 , uniq is undefined
@yutingzhao1991 same bug
I can confirm this, thank you for the demo repository. Interesting note this works when I do a two-stage tranformation. I created the following babel.config.js:
module.exports = {
env: {
step1: {
presets: ['@babel/preset-env'],
plugins: [
['import', {
libraryName: 'lodash',
libraryDirectory: '',
camel2DashComponentName: false,
}, 'lodash']
]
},
step2: {
plugins: [['istanbul', {useInlineSourceMaps: false}]]
}
}
};
Then ran:
NODE_ENV=step1 npx babel src --out-dir tmp
NODE_ENV=step2 npx babel tmp --out-dir lib
This produced what I expected to see in lib/index.js
. I'm not sure what the cause/solution is. Obviously I'm not suggesting that step1 / step2 setup is a solution, just a possible clue.
I also encountered the same problem. The same code, using Jest for testing。
The same bug. And can anyone provide a solution? thx.
I find a way to solve this problem, maybe it's a not perfect way, but I hope it can bring some inspiration to you. https://github.com/ant-design/babel-plugin-import/commit/07cf344327fecf2963273166d0e0b357cc0448ef
A temporary way: const { Option } = Select;
-> const Option = Select.Option;
@Mrjeff578575 have you considered submitting that patch to babel-plugin-import?
the same bug.
the same bug
the same bug
how about this bug? as @zenjava shows, maybe it's not a bug for babel-plugin-import.