standard-engine, 模块的`standard` 模块可以重用

分享于 

15分钟阅读

GitHub

  繁體 雙語
:fire_engine: The guts of `standard` modularized for reuse
  • 源代码名称:standard-engine
  • 源代码网址:http://www.github.com/standard/standard-engine
  • standard-engine源代码文档
  • standard-engine源代码下载
  • Git URL:
    git://www.github.com/standard/standard-engine.git
    Git Clone代码到本地:
    git clone http://www.github.com/standard/standard-engine
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/standard/standard-engine
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    标准引擎 travisnpmdownloadsjavascript style guide

    概述

    在 easy-to-use 命令行 工具和/或者JS模块中打包你自己的eslint规则。

    安装

    
    npm install standard-engine
    
    
    
    

    ,正在使用 standard-engine

    下面是使用 standard-engine的软件包列表。 深入他们的想法 !

    你自己做的? 创建一个请求请求,我们将把它添加到自述文件 !

    用法

    创建文件 below 并填写你自己的options.js 值。

    index.js

    // programmatic usagevar Linter =require('standard-engine').lintervar opts =require('./options.js')module.exports=newLinter(opts)

    cli.js

    #!/usr/bin/env nodevar opts =require('../options.js')require('standard-engine').cli(opts)

    options.js

    var eslint =require('eslint')var path =require('path')var pkg =require('./package.json')module.exports= {
     // homepage, version and bugs pulled from package.json version:pkg.version,
     homepage:pkg.homepage,
     bugs:pkg.bugs.url,
     eslint: eslint, // pass any version of eslint> = 1.0.0 cmd:'pocketlint', // should match the"bin" key in your package.json tagline:'Live by your own standards!', // displayed in output --help eslintConfig: {
     configFile:path.join(__dirname, 'eslintrc.json')
     },
     cwd:''// current working directory, passed to eslint}

    另外还可以提供可选的parseOpts() 函数。 有关详细信息,请参阅 below。

    eslintrc.json 将所有的。eslintrc规则放在这个文件中。 一个好的做法是创建一个 ESLint共享配置插件并扩展它,但它不需要:

    {
     // pretend that the package eslint-config-pocketlint exists!"extends": ["pocketlint"]
    }

    为例,或者如果你想扩展/变异 standard,请参见 eslint-config-semistandard。

    编辑器集成

    Atom

    是一个支持一些更流行的标准引擎实现的插件插件,在这个框架中。 它通过扫描你正在编辑的项目的依赖项来检测它们。 你可以通过项目 package.json 文件中的配置将它与任何其他实现一起使用。

    引擎特性

    忽略文件

    project文件 node_modules/***.min.jsbundle.jscoverage/**。隐藏文件/文件夹( 从 . 开始) 以及项目 .gitignore 文件中的所有模式都将自动忽略。

    有时你需要忽略其他文件夹或者特定的minfied文件。 为此,向 package.json 添加一个 ignore 属性:

    "pocketlint": { // this key should equal the value of cmd in options.js"ignore": [
     "**/out/",
     "/lib/select2/",
     "/lib/ckeditor/",
     "tmp.js" ]
    }

    默认情况下,某些文件将被忽略:

    varDEFAULT_IGNORE= [
     '**/*.min.js',
     '**/bundle.js',
     'coverage/**',
     'node_modules/**',
     'vendor/**']

    你可以通过将 noDefaultIgnore 选项设置为 true 来禁用这些默认忽略。

    隐藏警告

    由于 standard-engine 使用 eslint under-the-hood,所以你可以像直接使用 eslint 一样隐藏警告。

    要获取详细输出( 所以你可以找到 NAME 要忽略的规则),请运行:

    $ pocketlint --verbose
    Error: Live by your own standards! routes/error.js:20:36: 'file' was used before it was defined. (no-use-before-define)

    禁用对特定行的所有规则 :

    file ='I know what I am doing'// eslint-disable-line

    或者,仅在规则中禁用 :

    file ='I know what I am doing'// eslint-disable-line no-use-before-define

    或者,禁用"no-use-before-define" 规则:

    /*eslint-disable no-use-before-define */// offending code here...// offending code here...// offending code here.../*eslint-enable no-use-before-define */

    在项目的一个 package.json 中定义全局变量

    standard-engine 还将查找项目的package.json,并遵循这样定义的任何全局变量:

    {
     "pocketlint": { // this key should equal the value of cmd in options.js"globals": [ // can be a string or an array of strings"myVar1",
     "myVar2" ]
     }
    }

    你可以使用 global 作为 globals ( 不指定两个)的别名。

    在项目的package.json 中加载ESLint插件

    可以像这样指定其他ESLint插件:

    {
     "pocketlint": { // this key should equal the value of cmd in options.js"plugins": [ // can be a string or an array of strings"flowtype" ]
     }
    }

    你可以使用 plugin 作为 plugins ( 不指定两个)的别名。 插件必须安装( 例如: npm install eslint-plugin-flowtype 或者全局: npm install eslint-plugin-flowtype -g )。

    在项目的package.json 中加载额外的环境

    可以像这样指定其他环境:

    {
     "pocketlint": { // this key should equal the value of cmd in options.js"envs": [ "browser", "mocha" ]
     }
    }

    envs 可以是字符串,字符串的array,也可以是对象。 在后一种情况下,键被用作环境 NAME,但falsy值表示环境没有实际加载。 你不能通过设置falsy值来卸载环境。

    你可以使用 env 作为 envs ( 不指定两个)的别名。

    用于出血边缘ES6或者ES7支持的自定义JS解析器?

    standard-engine 支持自定义的JS解析器。 要使用自定义解析器,请从npm安装它( 示例: npm install babel-eslint ) 并将它的添加到你的package.json 中:

    {
     "pocketlint": { // this key should equal the value of cmd in your options.js"parser":"babel-eslint" }
    }

    如果你正在使用定制的linter全局( 你用 -g 安装的),那么你还需要在全球范围内安装 babel-eslintnpm install babel-eslint -g

    自定义选项

    你可以在 options.js 导出中提供 parseOpts() 函数:

    var eslint =require('eslint')var path =require('path')var pkg =require('./package.json')module.exports= {
     // homepage, version and bugs pulled from package.json version:pkg.version,
     homepage:pkg.homepage,
     bugs:pkg.bugs.url,
     eslint: eslint, // pass any version of eslint> = 1.0.0 cmd:'pocketlint', // should match the"bin" key in your package.json tagline:'Live by your own standards!', // displayed in output --help eslintConfig: {
     configFile:path.join(__dirname, 'eslintrc.json')
     },
     parseOpts:function (opts, packageOpts, rootDir) {
     // provide implementation here, then return the opts object (or a new one)return opts
     }
    }

    这个函数使用当前选项对象( opts )。从项目( packageOpts ) package.json 提取的任何选项以及包含该 package.json 文件(。rootDir,如果没有找到文件,则等效于 opts.cwd )的目录调用。

    使用将要使用的选项修改并返回 opts,或者返回一个新的对象。

    opts 对象中有以下选项,并且必须位于返回的对象上:

    • ignore: 要忽略的文件块的array
    • cwd: 字符串,当前工作目录
    • fix: 布尔值,是否自动修复问题
    • eslintConfig: 对象,传递给 eslint CLIEngine的选项

    API用法

    engine.lintText(text, [opts], callback)

    Lint提供的源 text 来强制你定义的样式。 可以提供 opts 对象:

    {
     cwd:'', // current working directory (default: process.cwd()) filename:'', // path of file containing the text being linted fix:false, // automatically fix problems globals: [], // custom global variables to declare plugins: [], // custom eslint plugins envs: [], // custom eslint environment parser:'', // custom js parser (e.g. babel-eslint) usePackageJson:true// use options from nearest package.json?}

    尽管有些ESLint插件需要 filename 选项,但所有选项都是可选的。

    如果在当前工作目录中找到了其他选项,则可以从 package.json 加载其他选项。 有关详细信息,请参阅 below。

    将使用 Errorresults 对象调用 callback

    results 对象将包含以下属性:

    var results = {
     results: [
     {
     filePath:'',
     messages: [
     { ruleId:'', message:'', line:0, column:0 }
     ],
     errorCount:0,
     warningCount:0,
     output:''// fixed source code (only present with {fix: true} option) }
     ],
     errorCount:0,
     warningCount:0}

    results = engine.lintTextSync(text, [opts])

    engine.lintText()的同步版本如果发生错误,则引发异常。 否则,将返回一个 results 对象。

    engine.lintFiles(files, [opts], callback)

    Lint提供的files 控件。 可以提供 opts 对象:

    {
     ignore: [], // file globs to ignore (has sane defaults) cwd:'', // current working directory (default: process.cwd()) fix:false, // automatically fix problems globals: [], // custom global variables to declare plugins: [], // custom eslint plugins envs: [], // custom eslint environment parser:'', // custom js parser (e.g. babel-eslint) usePackageJson:true// use options from nearest package.json?}

    如果在当前工作目录中找到了其他选项,则可以从 package.json 加载其他选项。 有关详细信息,请参阅 below。

    ignorefiles 窗口都被解析为当前工作目录的relative。

    将使用 Errorresults 对象( 同上面一样) 调用 callback

    注意:没有同步版的。

    完整的opts

    这是 上面 api所接受的完整选项集。 对于每个 API,并非所有选项都有意义,例如 ignore 不用于 lintText()filename 不与 lintFiles() 一起使用。

    {
     ignore: [], // file globs to ignore (has sane defaults) cwd:'', // current working directory (default: process.cwd()) filename:'', // path of the file containing the text being linted (optional) fix:false, // automatically fix problems globals: [], // custom global variables to declare plugins: [], // custom eslint plugins envs: [], // custom eslint environment parser:''// custom js parser (e.g. babel-eslint)}

    以下别名可用:

    {
     global: [], // custom global variables to declare plugin: [], // custom eslint plugins env: [], // custom eslint environment}

    请注意 globalspluginsenvs 优先考虑。

    parser 选项优先于项目 package.json 中的任何 parser 设置。


    Modular  reuse  
    相关文章