# css

# 隐藏滚动条且正常滚动

  • Chrom

    ::-webkit-scrollbar{
      display: none;
    }
    
    1
    2
    3
  • IE && Edge

    -ms-overflow-style:none;
    
    1
  • FireFox

    scrollbar-width: none;
    
    1

# GIT

# 代码回滚

$ git reset --hard HEAD^         回退到上个版本
$ git reset --hard HEAD~3        回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id     退到/进到 指定commit的sha码

强推到远程:

$ git push origin HEAD --force
1
2
3
4
5
6
7

# ESlint

# Disabling Rules with Inline Comments

可以在你的文件中使用以下格式的块注释来临时禁止规则出现警告:

/* eslint-disable */

alert('foo');

/* eslint-enable */
1
2
3
4
5

你也可以对指定的规则启用或禁用警告:

/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */
1
2
3
4
5
6

如果在整个文件范围内禁止规则出现警告,将 /* eslint-disable */ 块注释放在文件顶部:

/* eslint-disable */

alert('foo');
1
2
3

你也可以对整个文件启用或禁用警告:

/* eslint-disable no-alert */

// Disables no-alert for the rest of the file
alert('foo');
1
2
3
4

可以在你的文件中使用以下格式的行注释或块注释在某一特定的行上禁用所有规则:

alert('foo'); // eslint-disable-line

// eslint-disable-next-line
alert('foo');

/* eslint-disable-next-line */
alert('foo');

alert('foo'); /* eslint-disable-line */
1
2
3
4
5
6
7
8
9

在某一特定的行上禁用某个指定的规则:

alert('foo'); // eslint-disable-line no-alert

// eslint-disable-next-line no-alert
alert('foo');

alert('foo'); /* eslint-disable-line no-alert */

/* eslint-disable-next-line no-alert */
alert('foo');
1
2
3
4
5
6
7
8
9

在某个特定的行上禁用多个规则:

alert('foo'); // eslint-disable-line no-alert, quotes, semi

// eslint-disable-next-line no-alert, quotes, semi
alert('foo');

alert('foo'); /* eslint-disable-line no-alert, quotes, semi */

/* eslint-disable-next-line no-alert, quotes, semi */
alert('foo');
1
2
3
4
5
6
7
8
9

上面的所有方法同样适用于插件规则。例如,禁止 eslint-plugin-examplerule-name 规则,把插件名(example)和规则名(rule-name)结合为 example/rule-name

foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */
1
2

**注意:**为文件的某部分禁用警告的注释,告诉 ESLint 不要对禁用的代码报告规则的冲突。ESLint 仍解析整个文件,然而,禁用的代码仍需要是有效的 JavaScript 语法。

# node

# 批量读取文件内容,在文件起始位置加入新内容,给文件重命名

const path = require('path');
const fs = require('fs');
const config = new Map([
  ['0008.md', '08 在 Webpack 中使用 Babel 转换 JavaScript 代码'],
  ['0009.md', '09 Webpack 中使用 TypeScript 开发项目'],
  ['0010.md', '10 Webpack 中样式相关的配置'],
  ['0011.md', '11 Webpack 中使用 lint 工具来保证代码风格和质量'],
  ['0012.md', '12 使用 Webpack 管理项目中的静态资源'],
  ['0013.md', '13 Webpack 中打包 HTML 和多页面配置'],
  ['0014.md', '14 Webpack Dev Server 本地开发服务'],
  ['0015.md', '15 Webpack 中配置React和Vue开发环境'],
  ['0016.md', '16 Webpack 环境相关配置及配置文件拆分'],
  ['0017.md', '17 Webpack 优化之体积优化'],
  ['0018.md', '18 Webpack 优化之增强缓存命中率'],
  ['0019.md', '19 使用 Webpack 的 splitChunks 功能来拆分代码'],
  ['0020.md', '20 Webpack 优化之速度优化'],
  ['0021.md', '21 使用 Webpack 的 Tree-Shaking'],
  ['0022.md', '22 为你准备了一份 Webpack 工程化最佳实践总结'],
  ['0023.md', '23 怎么调试 Webpack?'],
  ['0024.md', '24 Tapable —— Webpack 的核心模块'],
  ['0025.md', '25 Webpack 的 Compiler 和 Compilation'],
  ['0026.md', '26 Webpack 工作流程'],
  ['0027.md', '27 从 Webpack 的产出代码来看 Webpack 是怎么执行的'],
  ['0028.md', '28 Webpack 的模块热替换做了什么?'],
  ['0029.md', '29 实战:使用 PostCSS 打造移动适配方案'],
  ['0030.md', '30 实战:手写一个 markdown-loader'],
  ['0031.md', '31 实战:手写一个 prefetch-webpack-plugin 插件'],
  ['0032.md', '32 实战:使用 Express 和中间件来实现 Webpack-dev-server'],
  ['0033.md', '33 实战:使用 Stats 数据结构生成 Webpack 构建报告'],
  ['0034.md', '34 实战:给 Webpack 项目添加 modern'],
  ['0035.md', '35 Webpack 5.0'],
  ['0036.md', '36 课程总结'],
  ['0037.md', '37 附录:项目中常用的 loader'],
  ['0038.md', '38 附录:项目中常用的插件']
])

config.forEach((value,key) => {
  const filepath = path.resolve(__dirname, key); // 获取文件路径
  let content = fs.readFileSync(filepath, {encoding: 'utf-8'}); // 读取文件内容,并返回字符串
  // 给文件起始文智加入新内容
  content = `---
title: ${value}
description: 
lang: zh-CN
---

${content}
`
  fs.writeFileSync(filepath,content); // 将新内容写入文件
  fs.renameSync(filepath, path.resolve(__dirname, `${value}.md`)); // 给文件重命名
})

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Last Updated: 2020-4-27 22:56:04