Skip to content

Commit d3e3f5e

Browse files
committed
fix: avoid babel options validation error (fix #1209)
1 parent 8d93672 commit d3e3f5e

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

Diff for: lib/plugin.js

+8-1
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,15 @@ function cloneRule (rule, normalizedRule) {
138138
return res
139139
}
140140

141+
// Some loaders like babel-loader passes its own option directly to babel
142+
// and since babel validates the options, "ident" would cause an unknown option
143+
// error. For these loaders we'll bail out on the ident reuse.
144+
const reuseIdentBlackList = /babel-loader/
145+
146+
// Reuse options ident, so that imports from within css-loader would get the
147+
// exact same request prefixes, avoiding duplicated modules (#1199)
141148
function reuseIdent (use) {
142-
if (use.ident) {
149+
if (use.ident && !reuseIdentBlackList.test(use.loader)) {
143150
use.options.ident = use.ident
144151
delete use.ident
145152
}

Diff for: test/edgeCases.spec.js

+20
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,23 @@ test('test-less oneOf rules', done => {
5656
}
5757
}, res => assertComponent(res, done))
5858
})
59+
60+
test('babel-loader inline options', done => {
61+
mockBundleAndRun({
62+
entry: 'basic.vue',
63+
module: {
64+
rules: [
65+
{
66+
test: /\.js/,
67+
loader: 'babel-loader',
68+
options: {
69+
babelrc: false,
70+
presets: [
71+
[require('babel-preset-env'), { modules: false }]
72+
]
73+
}
74+
}
75+
]
76+
}
77+
}, res => assertComponent(res, done))
78+
})

0 commit comments

Comments
 (0)