npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eslint-plugin-wjs

v1.0.5

Published

eslint前端配置集合

Downloads

2

Readme

eslint-plugin-wjs

eslint-plugin-wjs 是基于公司定义的规范中能被eslint检查的条款生成的一份公共的eslint配置,方便不同的项目之间引用。

1. 安装

npm install eslint-plugin-wjs --D
or
yarn add eslint-plugin-wjs --D

2. 使用

2.1 前置依赖项

本插件依赖以下npm库:

| 库名称 | 推荐版本 | 说明 | |----|----|----| | eslint | ^6.8.0 | - | | eslint-plugin-simple-import-sort | ^10.0.0 | 这个主要是规范import语句的,涉及到import合并和排序,这个插件可以自动格式化 | | eslint-plugin-vue | ^6.2.2 | vue官方推荐的eslint插件,本插件在官方插件基础上做了一些定制化配置 |

说明: 本插件库是一个eslint配置集合,虽然依赖于上面的库但不严格要求使用推荐版本,使用者可以自由更新依赖库的版本,自行处理好各版本之间的兼容性即可。

2.2 使用指引

本插件和其他的eslint插件的使用并没有不同,直接在.eslintrc.js中继承即可:

module.exports = {
  root: true,
  env: {
    node: true
  },
  extends: [
    'plugin:vue/recommended',
    'eslint:recommended',
    'plugin:wjs/vue2-recommended'
  ],
  parserOptions: {
    parser: 'babel-eslint'
  },
  ignorePatterns: ["src/**/*.min.js"]
}

当前版本下只包含了一个 vue2-recommended 一个配置集合,如果后续有 typescript-recommendedvue3-recommended 的集合引入方式也类似,在 .eslintrc.jsextends 添加 plugin:wjs/typescript-recommendedplugin:wjs/vue3-recommended 即可。

3. 配置集说明

3.1 vue2-recommended

  • generator-star-spacing:off
  • array-bracket-spacing:[error, "never"]
  • array-element-newline: [error, "consistent"], //数字内容换行的时候报错并修复;
  • array-callback-return: error, //数组的form/every/filter/find/findIndex/reduce/reduceRight/some/sort没有return的时候报错;
  • block-scoped-var: error, //变量在定义块的外部使用时,规则会生成警告
  • complexity: [error, 30], //循环复杂度测量程序源代码中线性独立路径的数量
  • for-direction: error, //无限循环代码报错
  • func-call-spacing: [error, "never"], //调用的方法前边不允许有空格并修复
  • func-name-matching: [error, "never"], //函数名称与它们所分配的变量或属性的名称相匹配
  • eqeqeq: [error, "smart"], //运算规则符号===/!==校验
  • lines-between-class-members: [error, "always"], //同一个class方法中间空行
  • max-depth: [error, 4], //最深的层级,其他可以另写方法
  • max-lines: [error, 5000], // 主要是限于老版本改造量大所以放的比较宽,新建项目引入的时候建议覆盖为500
  • max-params: [error, 4], //单个方法的入参数虽多4个
  • max-statements-per-line: [error, { "max": 2 }], //每行允许有几个方法
  • no-bitwise: error, //运算符检查'||',error'|'
  • no-else-return: error, //if有return else不需要使用并且自动修复
  • no-empty: error, //方法块里边没有执行其他语句
  • no-empty-function: error, //空方法报错
  • no-lonely-if: error, //如果一个if陈述是该else块中唯一的陈述,那么使用一个else if表格通常会更清晰
  • no-mixed-spaces-and-tabs: error, //不允许使用混合空格和制表符进行缩进
  • no-multiple-empty-lines: [error, { "max": 1, "maxEOF": 1 }], //允许文件结尾处强制执行最大数量的连续空1行并且自动修复
  • no-nested-ternary: error, //规则不允许嵌套的三元表达式
  • no-template-curly-in-string: error, //它会在发现一个包含模板文字 place holder(${something})的字符串时发出警告
  • no-trailing-spaces: error, //不允许在行尾添加尾随空白git对比差异产生冲突,自动修复
  • no-unreachable: error, //不允许可达代码后return,throw,continue,和break语句
  • no-useless-concat: error, //标记2个文字的连接,当它们可以合并成一个文字时
  • no-var: error, //阻止var使用或鼓励改为使用const或let,并且自动修复
  • require-await: error, //警告不具有await表达式的异步函数
  • semi-spacing: [error, { "before": false, "after": true }], //防止在表达式中使用分号之前的空格。
  • space-before-blocks: [error, "always"], //blocks块必须至少有一个先前的空间
  • space-before-function-paren: [error, "never"], //关键字与开始参数之间不允许有空格,匿名函数的关键字之后可能需要一个空格并且自动修复
  • spaced-comment: [error, "always", { "block": { "balanced": true } }], //强制间距的一致性//或/*
  • template-curly-spacing: error, //模板文字内部空间的一致性
  • no-duplicate-imports: [error, { "includeExports": true }],
  • no-self-compare: warn,
  • no-unmodified-loop-condition: warn,
  • no-use-before-define: [error, "nofunc"],
  • default-case: error,
  • curly: error,
  • default-param-last: error,
  • no-caller: warn,
  • no-invalid-this: warn,
  • no-return-assign: [error, "always"],
  • no-shadow: error,
  • no-unneeded-ternary: warn,
  • no-useless-return: warn,
  • prefer-const: warn,
  • prefer-object-spread: warn,
  • dot-notation: error,
  • no-eval: error,
  • prefer-template: warn,
  • no-new-func: error,
  • no-param-reassign: warn,
  • arrow-body-style: [error, "as-needed"],
  • simple-import-sort/imports: error,
  • indent: ["error", 2, { "SwitchCase": 1 }],
  • vue/require-default-prop: off,
  • vue/html-closing-bracket-newline: [error, { "singleline": "never", "multiline": "never" }],
  • vue/attributes-order: [error, { "order": [ "DEFINITION", "LIST_RENDERING", "CONDITIONALS", "RENDER_MODIFIERS", "GLOBAL", ["UNIQUE", "SLOT"], "TWO_WAY_BINDING", "OTHER_DIRECTIVES", "OTHER_ATTR", "EVENTS", "CONTENT" ], "alphabetical": false }],
  • vue/max-attributes-per-line: [error, { "singleline": { "max": 3}, "multiline*: { "max": 1 } }],
  • vue/html-indent: [error, 2, { "attribute": 1, "baseIndent": 1,"closeBracket": 0, "alignAttributesVertically": true, "ignores": [] }],
  • no-unused-vars: [error, { "argsIgnorePattern": "_", "args":"after-used", "var": "all", "ignoreRestSiblings": true }]