现代 JavaScript 库常见配置文件

前言

现在的一些开源项目的配置文件越来越多,而且对于新人也很不友好。本文就是汇集一些现代JavaScript库中常见配置文件,并做简单的介绍。

  • 项目简单介绍(README.md
  • 协议(LICENSE
  • webpack配置(webpack.config.js
  • Babel配置(.babelrc
  • ESLin配置(.eslintrc
  • TSLint配置(tslint.json
  • 代码格式化(.prettierrc
  • 编辑器规范(.editorconfig
  • 浏览器支持(.browserslistrc
  • git提交(.gitignore
  • npm配置(.npmrc

项目简单介绍(README.md)

README.md是项目中最常见的一个文件了,该文件主要就是作为项目的一个简单介绍,一般包括项目简介,使用者指南等内容。另外,可以使用如下图所示的徽章来呈现更直观的信,该网站专门制作各种徽章:Shields.io

徽章

协议(LICENSE)

如果是做一个开源项目则必须要选择一个协议,选择什么协议可以参考下面阮一峰老师的这张图:

开源协议选择

webpack 配置(webpack.config.js)

webpack作为现代化前端首选项目构建工具,自然少不了对webpack的配置,关于它的配置在此不做详细说明。对于webpack的配置一般会分为开发模式和生产模式,自然会有webpack.config.dev.jswebpack.config.prod.js文件,可参考create-react-app中的webpack配置,也有助于学习webpack

Babel 配置(.babelrc)

配置介绍:Config Files
tipsbabel 7.x引入了babel.config.js来写Babel配置

下面是ant design中引入按需加载的配置示例:

{
  "presets": ["react-app"],
  "plugins": [
    [
      "import",
      { "libraryName": "antd", "libraryDirectory": "es", "style": "css" }
    ]
  ]
}

ESLin 配置(.eslintrc)

ESLint配置介绍:ESLint Configuring
ESLint规则查阅:ESLin Rulest

ESLint可以有效的检查项目的代码错误及规范,下面这段代码是简单的ESLint文件配置:

  1. extends属性可以从一些基础配置中继承已启用的规则:
  • airbnb:该规范推荐了ES6的语法,也是目前整个前端界比较公认的方案:airbnb/javascript
  • eslint:recommendedESLint的推荐规范
  • plugin:react/recommendedReact的推荐规范(eslint-plugin-react
  1. rules中可自定义ESLint规则,规则有下面三个级别:
  • "off" 或 0:关闭某个规则
  • "warn" 或1:启用某个规则,不符合规范会提示警告
  • "error" 或2:启用某个规则,不符合规范直接提示错误
{
  "parser": "babel-eslint",
  "extends": ["react-app", "airbnb", "prettier", "plugin:react/recommended"],
  "env": {
    "browser": true,
    "node": true,
    "es6": true
  },
  "plugins": ["import", "react"],
  "parserOptions": {
    "ecmaVersion": 6,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true
    }
  },
  "rules": {
    "react/jsx-filename-extension": ["warn", { "extensions": [".js", ".jsx"] }],
    "react/jsx-wrap-multilines": "off",
    "react/require-default-props": "off",
    "import/no-dynamic-require": "warn",
    "import/no-extraneous-dependencies": ["error", { "optionalDependencies": true }],
    "import/no-unresolved": ["error", { "ignore": ["^@/", "^umi/"] }],
    "import/newline-after-import": "warn",
    "arrow-body-style": "warn",
    "consistent-return": "off",
    "func-names": "off",
    "global-require": "off",
    "linebreak-style": "off",
    "no-else-return": "off",
    "no-nested-ternary": "warn",
    "no-param-reassign": ["off", { "props": false }],
    "no-plusplus": "off",
    "no-underscore-dangle": "off",
    "no-unused-expressions": ["error", { "allowTaggedTemplates": true }],
    "no-use-before-define": ["error", { "functions": false, "classes": false }],
    "prefer-template": "warn",
    "strict": "off"
  }
}

TSLint 配置(tslint.json)

TSLint规则查阅:TSLin Rulest

TSLint与上述ESLint作用一致,是对项目中TypeScript语法的检查,下面是ant-design-protslint.json文件

{
  "extends": ["tslint:latest", "tslint-react", "tslint-config-prettier"],
  "rules": {
    "no-var-requires": false,
    "no-submodule-imports": false,
    "object-literal-sort-keys": false,
    "jsx-no-lambda": false,
    "no-implicit-dependencies": false,
    "no-console": false
  }
}

代码格式化(.prettierrc)

配置介绍:Configuration File

下面是个人推荐的prettier配置:

{
  "printWidth": 120,
  "tabWidth": 2,
  "useTabs": false,
  "semi": true,
  "singleQuote": true,
  "trailingComma": "none",
  "bracketSpacing": true,
  "jsxBracketSameLine": false,
  "arrowParens": "avoid",
  "requirePragma": false,
  "proseWrap": "preserve"
}

编辑器规范(.editorconfig)

EditorConfig官网:EditorConfig

# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

浏览器支持(.browserslistrc)

browserslist的数据来自Can I use
详细参数介绍:browserslist full-list

# Browsers that we support

last 2 version
> 1%
not dead
not ie <= 11
Firefox ESR
not op_mini all

git 提交(.gitignore)

.gitignore文件也是项目必备的一个配置文件,一般在提交代码时不会提交node_modulesbuild等目录中的文件,所以通过该文件来忽略不必要的文件提交

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

npm 配置(.npmrc)

在之前的 npm 总结(一)一中,介绍到了项目下的.npmrc文件是具有最高优先级的,也就是说npm优先读取.npmrc文件中的npm配置,所以可在此文件中设置一些特殊的npm配置。如果使用yarn的话就创建.yarnrc文件,作用同.npmrc文件

下面是通过.yarnrc文件来修改yarn的仓库源以保证下载相同的依赖:

registry "https://registry.yarnpkg.com/"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 5,283评论 4 31
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,089评论 0 21
  • 作者:小 boy (沪江前端开发工程师)本文原创,转载请注明作者及出处。原文地址:https://www.smas...
    iKcamp阅读 2,750评论 0 18
  • 雪景 柒 凉 有散落了些许的雪, 稀疏地下着, 慢慢变了世界的妆容。 雪白的天空,忽远及近, 远处的山一片...
    如_柒阅读 279评论 0 3