当webpack.DefinePlugin遭遇'xxx' is not defined no-undef
// webpack.config.js
{
plugins: [
new webpack.DefinePlugin({
'VERSION': JSON.stringify('1.0.0')
})
]
}
// app.js
console.log('VERSION', VERSION)
// 'VERSION' is not defined no-undef
当出现该eslint
错误,那说明你需要配置eslint
的lobals
属性。
因为通过webpack.DefinePlugin
配置进去的值是一个全局变量,默认情况下eslint
会阻止全局变量的使用,除非你明确的通过配置告诉他你知道你在干什么。
在项目对eslint
做如下配置:
// eslintrc.js
module.exports = {
globals: {
VERSION: true
}
}
basedir=$(dirname "$(echo "$0" | sed -e 's,\,/,g')")
当执行如下命令报标题所示的错误,是因为windows
无法执行shell
命令导致。
{
"debugger": "node ./node_modules/.bin/webpack --config webpack.config.js"
}
我们跳过shell
命令,直接执行目标文件即可。
{
"debugger": "node ./node_modules/webpack/bin/webpack --config webpack.config.js"
}
资料:
http://www.jerrychane.com/technique-sharing/2859.html
oneOf是干什么的?
避免无意义的rule匹配。
rules: [
{
test: /\.less$/,
loader: 'less-loader'
},
{
test: /\.scss$/,
loader: 'scss-loader'
},
]
上面是一个常规的rules配置,当我有一个style.less
文件,会执行如下流程:
1 尝试与.less
进行匹配
2 尝试与.scss
进行匹配
观察上面执行流程,我们会发现第2条其实是没有意义的,因为他根本不会匹配上,那么,有什么办法优化掉第2条的执行呢?
答案就是oneOf
。
rules: [
{
oneOf: [
{
test: /\.less$/,
loader: 'less-loader'
},
{
test: /\.scss$/,
loader: 'scss-loader'
},
]
}
]
上面是使用了oneOf
的rules
配置,当我有一个style.less
文件,会执行如下流程:
1 尝试与.less
进行匹配(结束,下面那条不会被执行了)2 尝试与.scss
进行匹配
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。