抑制 Webpack 2 + ESLint 额外输出(堆栈跟踪)
Suppress Webpack 2 + ESLint extra output (stack trace)
我正在将一个项目从 create-react-app
迁移到自定义 Webpack 2 配置,到目前为止,除了 ESLint 输出外,我的所有工作都与 CRA 版本中的一样。
我看惯了下面的...
预期输出:
WARNING in ./src/apps/NotesApp/components/Replies/ReplyEditor.js
./src/apps/NotesApp/components/Replies/ReplyEditor.js
17:1 warning Line 17 exceeds the maximum line length of 120 max-len
✖ 1 problem (0 errors, 1 warning)
但现在我得到了一个完整的堆栈跟踪,使这些警告占用了 2-3 倍 console/terminal space.
邪恶输出:
WARNING in ./src/apps/NotesApp/components/Replies/ReplyEditor.js
./src/apps/NotesApp/components/Replies/ReplyEditor.js
17:1 warning Line 17 exceeds the maximum line length of 120 max-len
✖ 1 problem (0 errors, 1 warning)
@ ./src/apps/NotesApp/components/Replies/Replies.js 3:0-40
@ ./src/apps/NotesApp/components/Replies/ReplyPanel.js
@ ./src/apps/NotesApp/components/Note.js
@ ./src/apps/NotesApp/components/NotesList.js
@ ./src/apps/NotesApp/containers/NotesModal.js
@ ./src/apps/NotesApp/components/NotesApp.js
@ ./src/apps/NotesApp/index.js
@ ./build/buildImport.js
@ ./src/apps/AppsLibrary/LibraryRoutes.js
@ ./src/index.js
@ multi (webpack)-dev-server/client?http://localhost:3000 webpack/hot/dev-server (webpack)-dev-server/client?/ (webpack)/hot/dev-server.js react-hot-loader/patch ./src/index
我试过的...
以下 webpack.config.js
选项完全删除了所有输出(我不想要):
devServer: { stats: 'none' }
devServer: { quiet: true }
devServer: { stats: { warnings: false }}
devServer.stats
的每个其他选项都对堆栈跟踪没有影响。
为了查看 ESLint 是否正在创建堆栈跟踪,我将自定义格式化程序设置为 return 空白:
rules: [
{
enforce: 'pre',
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'eslint-loader',
options: { formatter: message => '' }
}
]
...具有以下输出:
WARNING in ./src/apps/NotesApp/components/Replies/ReplyEditor.js
ESLintError
@ ./src/apps/NotesApp/components/Replies/Replies.js 3:0-40
@ ./src/apps/NotesApp/components/Replies/ReplyPanel.js
@ ./src/apps/NotesApp/components/Note.js
@ ./src/apps/NotesApp/components/NotesList.js
@ ./src/apps/NotesApp/containers/NotesModal.js
@ ./src/apps/NotesApp/components/NotesApp.js
@ ./src/apps/NotesApp/index.js
@ ./build/buildImport.js
@ ./src/apps/AppsLibrary/LibraryRoutes.js
@ ./src/index.js
@ multi (webpack)-dev-server/client?http://localhost:3000 webpack/hot/dev-server (webpack)-dev-server/client?/ (webpack)/hot/dev-server.js react-hot-loader/patch ./src/index
WebpackDevServer 的 node.js 执行创建了一个 stats
对象,其中包含有关 devServer 的所有错误、警告和其他信息,并且每个 stats.warnings
都是格式化的消息对于 shell 这样的:
"./src/apps/NotesApp/components/Replies/ReplyEditor.js
[4m./src/apps/NotesApp/components/Replies/ReplyEditor.js[24m
[2m17:1[22m [33mwarning[39m Line 17 exceeds the maximum line length of 120 [2mmax-len[22m
[33m[1m✖ 1 problem (0 errors, 1 warning)
[22m[39m
@ ./src/apps/NotesApp/components/Replies/Replies.js 3:0-40
@ ./src/apps/NotesApp/components/Replies/ReplyPanel.js
@ ./src/apps/NotesApp/components/Note.js
@ ./src/apps/NotesApp/components/NotesList.js
@ ./src/apps/NotesApp/containers/NotesModal.js
@ ./src/apps/NotesApp/components/NotesApp.js
@ ./src/apps/NotesApp/index.js
@ ./build/buildImport.js
@ ./src/apps/AppsLibrary/LibraryRoutes.js
@ ./src/index.js
@ multi (webpack)-dev-server/client?http://localhost:3000 webpack/hot/dev-server (webpack)-dev-server/client?/ (webpack)/hot/dev-server.js react-hot-loader/patch ./src/index"
...这让我看起来可以截取消息并执行类似 stats.warnings.map(message => message.replace(/^\s*(at|@)+.*\n*/gm, ''))
的操作,但效果也为零。
有谁知道这个堆栈跟踪是在哪里生成的,是否有任何方法可以关闭它?
这可以通过在 stats 对象中设置 moduleTrace: false 从 2.5.0 版本的 webpack 开始实现:
module.exports = {
...
stats: {
moduleTrace: false,
},
};
我正在将一个项目从 create-react-app
迁移到自定义 Webpack 2 配置,到目前为止,除了 ESLint 输出外,我的所有工作都与 CRA 版本中的一样。
我看惯了下面的...
预期输出:
WARNING in ./src/apps/NotesApp/components/Replies/ReplyEditor.js
./src/apps/NotesApp/components/Replies/ReplyEditor.js
17:1 warning Line 17 exceeds the maximum line length of 120 max-len
✖ 1 problem (0 errors, 1 warning)
但现在我得到了一个完整的堆栈跟踪,使这些警告占用了 2-3 倍 console/terminal space.
邪恶输出:
WARNING in ./src/apps/NotesApp/components/Replies/ReplyEditor.js
./src/apps/NotesApp/components/Replies/ReplyEditor.js
17:1 warning Line 17 exceeds the maximum line length of 120 max-len
✖ 1 problem (0 errors, 1 warning)
@ ./src/apps/NotesApp/components/Replies/Replies.js 3:0-40
@ ./src/apps/NotesApp/components/Replies/ReplyPanel.js
@ ./src/apps/NotesApp/components/Note.js
@ ./src/apps/NotesApp/components/NotesList.js
@ ./src/apps/NotesApp/containers/NotesModal.js
@ ./src/apps/NotesApp/components/NotesApp.js
@ ./src/apps/NotesApp/index.js
@ ./build/buildImport.js
@ ./src/apps/AppsLibrary/LibraryRoutes.js
@ ./src/index.js
@ multi (webpack)-dev-server/client?http://localhost:3000 webpack/hot/dev-server (webpack)-dev-server/client?/ (webpack)/hot/dev-server.js react-hot-loader/patch ./src/index
我试过的...
以下 webpack.config.js
选项完全删除了所有输出(我不想要):
devServer: { stats: 'none' }
devServer: { quiet: true }
devServer: { stats: { warnings: false }}
devServer.stats
的每个其他选项都对堆栈跟踪没有影响。
为了查看 ESLint 是否正在创建堆栈跟踪,我将自定义格式化程序设置为 return 空白:
rules: [
{
enforce: 'pre',
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'eslint-loader',
options: { formatter: message => '' }
}
]
...具有以下输出:
WARNING in ./src/apps/NotesApp/components/Replies/ReplyEditor.js
ESLintError
@ ./src/apps/NotesApp/components/Replies/Replies.js 3:0-40
@ ./src/apps/NotesApp/components/Replies/ReplyPanel.js
@ ./src/apps/NotesApp/components/Note.js
@ ./src/apps/NotesApp/components/NotesList.js
@ ./src/apps/NotesApp/containers/NotesModal.js
@ ./src/apps/NotesApp/components/NotesApp.js
@ ./src/apps/NotesApp/index.js
@ ./build/buildImport.js
@ ./src/apps/AppsLibrary/LibraryRoutes.js
@ ./src/index.js
@ multi (webpack)-dev-server/client?http://localhost:3000 webpack/hot/dev-server (webpack)-dev-server/client?/ (webpack)/hot/dev-server.js react-hot-loader/patch ./src/index
WebpackDevServer 的 node.js 执行创建了一个 stats
对象,其中包含有关 devServer 的所有错误、警告和其他信息,并且每个 stats.warnings
都是格式化的消息对于 shell 这样的:
"./src/apps/NotesApp/components/Replies/ReplyEditor.js
[4m./src/apps/NotesApp/components/Replies/ReplyEditor.js[24m
[2m17:1[22m [33mwarning[39m Line 17 exceeds the maximum line length of 120 [2mmax-len[22m
[33m[1m✖ 1 problem (0 errors, 1 warning)
[22m[39m
@ ./src/apps/NotesApp/components/Replies/Replies.js 3:0-40
@ ./src/apps/NotesApp/components/Replies/ReplyPanel.js
@ ./src/apps/NotesApp/components/Note.js
@ ./src/apps/NotesApp/components/NotesList.js
@ ./src/apps/NotesApp/containers/NotesModal.js
@ ./src/apps/NotesApp/components/NotesApp.js
@ ./src/apps/NotesApp/index.js
@ ./build/buildImport.js
@ ./src/apps/AppsLibrary/LibraryRoutes.js
@ ./src/index.js
@ multi (webpack)-dev-server/client?http://localhost:3000 webpack/hot/dev-server (webpack)-dev-server/client?/ (webpack)/hot/dev-server.js react-hot-loader/patch ./src/index"
...这让我看起来可以截取消息并执行类似 stats.warnings.map(message => message.replace(/^\s*(at|@)+.*\n*/gm, ''))
的操作,但效果也为零。
有谁知道这个堆栈跟踪是在哪里生成的,是否有任何方法可以关闭它?
这可以通过在 stats 对象中设置 moduleTrace: false 从 2.5.0 版本的 webpack 开始实现:
module.exports = {
...
stats: {
moduleTrace: false,
},
};