gmfe/Think

对moment、lint-staged、jsinspect 做优化

fondadam opened this issue · 0 comments

moment

  • 若不需要任何locale, 可以这么配置webpack
config.plugins.push(new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/))
  • 若仅需要zh-cn,可以这么配置webpack
config.plugins.push(new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /zh-cn/))

参考链接: https://stackoverflow.com/questions/25384360/how-to-prevent-moment-js-from-loading-locales-with-webpack/37172595

lint-staged

之前我们项目的eslint都是直接全局检查js的,不管文件是否改变过。

举个例子,假如我们只修改了A.js文件,但在precommit的时候会lint所有的.js文件,造成不必要的时间浪费,所以现在引入了lint-staged,只lint改动的文件。

具体配置看package.json文件

{
  "scripts": {
    "precommit": "lint-staged"
  },
  "lint-staged": {
    "./js/**/*.js": ["eslint --cache --fix", "git add"]
  }
}

jsinspect

我们在写需求初期,有时候会对某些代码进行copy and paste,而jsinspect就是帮你检测代码中有没有重复的代码,提示你可以抽象出来。

jsinspect 主要是利用 babylon 对于 JavaScript 或者 JSX 代码构建 AST 语法树,根据不同的 AST 节点类型标记相似结构的代码块。

jsinspect 默认不对项目中的node_modulesbower_components做检查。

具体配置看package.json文件

{
  "scripts": {
    "jsinspect": "./node_modules/jsinspect/bin/jsinspect ./js/**/*.js"
  }
}