tslint集成到webpack中,如何自定义实现linterOptions.exclude

tslint的 CLI 命令中已经支持了  linterOptions.exclude,在使用tslint CLI命令的时候在tslint.json中配置linterOptions即可应用上,但是集成到webpack的ts-loader调用tslint在检查代码的时候,并没有支持该功能。

咱们先看下webpack中include和exclude的说明文档

        test: /\.jsx?$/,
        include: [
          path.resolve(__dirname, "app")
        ],
        exclude: [
          path.resolve(__dirname, "app/demo-files")
        ],
        // these are matching conditions, each accepting a regular expression or string
        // test and include have the same behavior, both must be matched
        // exclude must not be matched (takes preferrence over test and include)
        // Best practices:
        // - Use RegExp only in test and for filename matching
        // - Use arrays of absolute paths in include and exclude
        // - Try to avoid exclude and prefer include
        issuer: { test, include, exclude },

咱们的思路就变成通过webpack的exclude配置linterOption配置了,首先webpack不支持在exclude中添加Regex正则表达式,需要配置绝对路径,我们以linterOption中配置过滤css文件为例,通常css不需要tslint去检查。我们可以通过globby组件获取linterOption中定义的css正则,例如linterOption定义如下

"linterOptions":{
        "exclude": [
            "src/**/*.css"
        ]
},

然后再webpack中添加配置如下:

module: {
        rules: [{
        ...
        {
            test: /[\.ts|\.tsx]$/,
            loader: 'tslint-loader',
            enforce: "pre",
            options: {
                emitErrors: false
            },
            exclude: getTslintExclusions()
        }
        }]
}

下面看下getTslintExclusions方法的实现

const path = require('path');
const fs = require('fs');
const basePath = process.cwd();
const tslintPath = path.join(basePath, 'tslint.json');
const tslint = fs.existsSync(tslintPath)? require(tslintPath) : false;
const globby = require('globby');

function getTslintExclusions() {
    if(tslint && tslint.linterOptions && tslint.linterOptions.exclude) {
        let excludecss = globby.sync(tslint.linterOptions.exclude).map((file) => path.resolve(file));
        return excludecss;
    }
    return [];
}

配置完成之后,运行webpack build命令就可以在tslint中成功过滤css文件的检查了

写在最后,

虽然tslint已经逐渐被eslint组件代替,后续前端项目还是推荐使用tslint,在SharePoint Framework中还是使用了自定义的tslint,为了跟sharepoint framework保持一致的话,tslint还需要使用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在一个Vue项目,常见的Webpack配置文件包括: 1. `webpack.base.config.js`:这是一个基础的Webpack配置文件,定义了通用的配置选项,例如入口文件、输出路径、模块解析规则等。它是不同环境配置文件的基础。 2. `webpack.dev.conf.js`:这是用于开发环境的Webpack配置文件。它会基于`webpack.base.config.js`进行扩展和覆盖,添加一些开发环境特定的配置选项,例如热重载、Source Maps等。 3. `webpack.prod.conf.js`:这是用于生产环境的Webpack配置文件。它同样会基于`webpack.base.config.js`进行扩展和覆盖,添加一些生产环境特定的配置选项,例如代码压缩、资源优化等。 4. `webpack.config.js`:在某些项目,可能会使用单一的Webpack配置文件来同时处理开发环境和生产环境。这个文件会根据环境变量动态地配置Webpack。它可能会引入`webpack.base.config.js`并根据环境变量来扩展或覆盖一些配置选项。 5. `config/index.js`:这是一个存放项目全局配置的文件夹。其的`index.js`文件包含了一些开发和生产环境的全局配置选项,例如服务器地址、端口号、是否开启热重载等。你可以在这个文件进行自定义配置以满足项目的需求。 需要注意的是,具体的配置内容和结构可能因项目而异,你可以根据项目需求自定义修改这些配置文件。这些文件的目的是为了方便开发者根据不同环境和需求来配置和优化Webpack打包过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值