J'ai un projet angular2 que je compresse/compile avec webpack.
J'utilise tslink loader avec webpack, j'ai donc une configuration liée à tslint dans webpack.config.js
.
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"
}
],
}
}
J'ai mis à jour le webpack 1.13.1 vers 2.1.0-beta.25 et la configuration de tslint rompt le processus de complication de npm run build
.
J'ai changé la directive preLoaders
en loaders
module: {
....
{
test: /\.ts$/,
loader: 'tslint',
exclude: /(node_modules)/,
enforce: 'pre'
},
],
}
cela ne suffit pas car je reçois toujours l'erreur
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.
donc je devrais déplacer la configuration tslint et la placer ailleurs. un peu perdu ici. donc toute information concernant le problème serait grandement appréciée.
merci!
Pour ceux qui ont des problèmes avec les préchargeurs dans le webpack 2. Dans la bêta v2.1-beta.23, il y a des changements de rupture avec les pré/postLoaders.
Tout d'abord, la section "chargeurs" doit être renommée en "règles". De plus, les pré/postLoaders sont désormais définis selon les règles.
Dans mon cas, j'utilisais tslint comme préchargeur. Pour ajouter un pré/postLoader aux règles, ajoutez la propriété enforce
avec la valeur pre
ou post
.
module: {
rules: [
{
enforce: 'pre',
test: /\.tsx?$/,
loader: 'tslint',
exclude: /(node_modules)/,
},
{
test: /\.tsx?$/,
loaders: ['awesome-TypeScript-loader'],
exclude: /(node_modules)/
}
]
}
Plus d'informations dans la version sur github: Webpack v2.1.0-beta.2
Dans les informations de version, il y a aussi un lien vers pull request qui montre les changements nécessaires allant de v2.1.0-beta.22
à v2.1.0-beta.23
dans le fichier de configuration du webpack. Là, vous pouvez voir que vous avez également besoin du LoaderOptionsPlugin.
plugins: [
new webpack.LoaderOptionsPlugin({
options: {
tslint: {
emitErrors: true,
failOnHint: true
}
}
})
]
ok .. donc j'avais juste besoin de déplacer la définition de tslint
sous:
plugins: [
new LoaderOptionsPlugin({
options: {
tslint: {
...
et déclaré
const LoaderOptionsPlugin = require("webpack/lib/LoaderOptionsPlugin");
Si vous ne voulez pas ajouter de plugin, vous pouvez faire quelque chose comme ça,
module: {
rules: [
{
enforce: 'pre',
test: /\.ts$/,
loader: 'tslint-loader?' + JSON.stringify({
emitErrors: true,
failOnHint: true
})
}
]
}