typescript - tslint-loader med webpack 2.1.0-beta.25


Jeg har et Angular2-prosjekt som jeg komprimerer/kompilerer med webpack.

Jeg bruker tslink-loader med webpack, så jeg har tslint-relatert konfigurasjon i 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"
        }
    ],
}
}

Jeg oppdaterte webpack 1.13.1 til 2.1.0-beta.25, og tslint-konfigurasjonen bryter kompilasjonsprosessen for npm run build.

Jeg endret preLoaders-direktivet til loaders

module: {
        ....
        {
            test: /\.ts$/,
            loader: 'tslint',
            exclude: /(node_modules)/,
            enforce: 'pre'
        },
    ],
}

det er ikke nok fordi jeg får fortsatt feilen

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.

så jeg bør flytte tslint-konfigurasjonen og plassere den et annet sted. Litt forvirret her. Så all informasjon om problemet vil bli høyt verdsatt.

takk!

Svar #1

For andre som har problemer med preloaders i webpack 2. I beta v2.1-beta.23 er det bruddendringer med pre/postLoaders.

Først bør "loaders"-seksjonen omdøpes til "rules". Også pre/postLoaders er nå definert under rules.

I mitt tilfelle brukte jeg tslint som en forhåndslaster. For å legge til en forhånds-/etterlaster i regler, legg til enforce-egenskapen med verdien enten pre eller post.

module: {
    rules: [
        {
            enforce: 'pre',
            test: /\.tsx?$/,
            loader: 'tslint',
            exclude: /(node_modules)/,
        },
        {
            test: /\.tsx?$/,
            loaders: ['awesome-typescript-loader'],
            exclude: /(node_modules)/
        }
    ]
}

Mer informasjon i utgivelsen på GitHub: Webpack v2.1.0-beta.23

I utgivelsesinformasjonen finnes det også en lenke til en pull request som viser de nødvendige endringene for å gå fra v2.1.0-beta.22 til v2.1.0-beta.23 i webpack-konfigurasjonsfilen. Der kan du se at du også trenger LoaderOptionsPlugin.

plugins: [
    new webpack.LoaderOptionsPlugin({
        options: {
            tslint: {
                emitErrors: true,
                failOnHint: true
            }
        }
    })
]

Relaterte artikler