我有一个angular2项目,我用webpack压缩/编译。
我使用tspack loader和webpack,所以我在webpack.config.js
中有与tslint相关的配置。
module.exports = {
...
tslint: {
configuration: {
rules: {
quotemark: [true, "double"]
}
},
// tslint errors are displayed by default as warnings
// set emitErrors to true to display them as errors
emitErrors: false,
// tslint does not interrupt the compilation by default
// if you want any file with tslint errors to fail
// set failOnHint to true
failOnHint: true,
// name of your formatter (optional)
formatter: "",
// path to directory containing formatter (optional)
formattersDirectory: "node_modules/tslint-loader/formatters/",
// These options are useful if you want to save output to files
// for your continuous integration server
fileOutput: {
// The directory where each file"s report is saved
dir: "./webpack-log/",
// The extension to use for each report"s filename. Defaults to "txt"
ext: "xml",
// If true, all files are removed from the report directory at the beginning of run
clean: true,
// A string to include at the top of every report file.
// Useful for some report formats.
header: "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<checkstyle version=\"5.7\">",
// A string to include at the bottom of every report file.
// Useful for some report formats.
footer: "</checkstyle>"
}
},
...
preLoaders: [
{
test: /\.ts$/,
loader: "tslint"
}
],
}
}
我将webpack 1.13.1更新为2.1.0-beta.25并且tslint配置打破了npm run build
的复杂过程。
我将preLoaders
指令更改为loaders
module: {
....
{
test: /\.ts$/,
loader: 'tslint',
exclude: /(node_modules)/,
enforce: 'pre'
},
],
}
这还不够,因为我仍然会收到错误
For loader options: webpack 2 no longer allows custom properties in configuration.
Loaders should be updated to allow passing options via loader options in module.rules.
所以我应该移动tslint配置并将其放在其他地方。有点迷失在这里。因此,非常感谢有关该问题的任何信息。
谢谢!
答案 0 :(得分:57)
对于在webpack 2中遇到预加载器问题的其他人。在beta v2.1-beta.23中,对pre / postLoaders进行了重大更改。
首先,“加载器”部分应重命名为“规则”。此外,pre / postLoaders现在也在规则下定义。
在我的情况下,我使用tslint作为preLoader。要向规则添加pre / postLoader,请添加值enforce
或pre
的{{1}}属性。
post
github上的更多信息:Webpack v2.1.0-beta.23
在发布信息中,还有一个指向pull request的链接,该链接显示了在webpack配置文件中从module: {
rules: [
{
enforce: 'pre',
test: /\.tsx?$/,
loader: 'tslint',
exclude: /(node_modules)/,
},
{
test: /\.tsx?$/,
loaders: ['awesome-typescript-loader'],
exclude: /(node_modules)/
}
]
}
到v2.1.0-beta.22
所需的更改。在那里你可以看到你还需要LoaderOptionsPlugin。
v2.1.0-beta.23
答案 1 :(得分:2)
好的..所以我只需要将tslint
定义移到:
plugins: [
new LoaderOptionsPlugin({
options: {
tslint: {
...
并宣布
const LoaderOptionsPlugin = require("webpack/lib/LoaderOptionsPlugin");
答案 2 :(得分:1)
如果您不想添加插件,可以执行以下操作,
module: {
rules: [
{
enforce: 'pre',
test: /\.ts$/,
loader: 'tslint-loader?' + JSON.stringify({
emitErrors: true,
failOnHint: true
})
}
]
}