经过一些研究,我们能够通过将情况分为两部分来解决这个问题:生产构建期间的jshinting测试(只有一次,分布式在磁盘上)和开发过程中的jshinting测试(观察模式,分布式在内存中)。
1、生产建设。
这相当简单,因为jshit只应该执行一次。添加后
jshint
作为npm包的依赖项
npm install --save-dev jshint
可以在构建脚本之前添加它
"hint-tests": "jshint --verbose test",
"build": "npm run hint-tests && npm run prod-build && npm run prod-test"
都不
prod-build
prod-test
流程了解
jshint公司
.
2、发展。
解决方案是通过
glob
:
entry: {
'ui-scroll': path.resolve(__dirname, '../src/ui-scroll.js'),
'ui-scroll-grid': path.resolve(__dirname, '../src/ui-scroll-grid.js')
'test': glob.sync(path.resolve(__dirname, 'test/*.js')) // development only!
}
这应该只针对开发环境进行,否则您将在分发文件夹中获得一个额外的包。所以我们在记忆中有它;由于额外的捆绑,这会对开发进程产生一些影响,但由于这种情况仅发生在内存中,因此差异不显著。然后使用
jshint-loader
让我们在网页包配置的模块部分再添加一条规则:
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
options: { presets: ['es2015'] }
},
{ // this is both for prod and dev environments
enforce: 'pre',
test: /\.js$/,
include: path.resolve(__dirname, 'src'),
use: [{ loader: 'jshint-loader' }]
},
{ // this is only for dev environment
enforce: 'pre',
test: /\.js$/,
include: path.resolve(__dirname, 'test'),
use: [{ loader: 'jshint-loader' }]
}
]
}
控制台输出中可能有太多日志,特别是在开发服务器工作期间,因此通过
stats
stats: {
modules: false,
errors: true,
warnings: true
}