Parcel

454 阅读2分钟
1.零配置前端应用打包器
// yarn add parcel-bundler --dev
// yarn parcel src/index.html  index.html入口文件
2.模块热替换
if (module.hot) {
  module.hot.accept(() => {
    console.log('hmr')
  })
} 
3.自动安装依赖

导入依赖保存自动安装

4.生产模式打包
yarn parcel build src/index.html

规范化标准

1.规范化介绍
  • 软件开发需要多人协同
  • 不同开发者具有不同的编码习惯和喜好
  • 不同的喜好增加项目维护成本
  • 每个项目或团队明确统一的标准
2.哪里需要规范化标准
  • 代码、文档、甚至提交日志
  • 开发过程中人为编写的成果物
3.ESLint介绍
  • 最为主流的JavaScript Lint工具检测JS代码质量
  • ESLint很容易统一开发者的编码风格
  • ESLint可以帮助开发者提升编码能力
4.安装ESLint

yarn add eslint --save-dev

eslint --version / npx eslint --version

npx eslint --init

npx eslint 文件名

module.exports = {
  env: { // 运行环境
    browser: true,
    es2021: true,
    node: true
  },
  extends: [ // 继承共享配置 
    'standard'
  ],
  parserOptions: { // 是否使用ES版本语法
    ecmaVersion: 12
  },
  rules: { // 配置校验规则开启或关闭
    'no-alert': "error"   // off warn error
  },
  globals: { // 代码中可以使用的全局成员
    "jQuery": "readonly"  
  }
}
5.ESLint配置注释

忽略eslint-disable-line一行当中所有问题

const str1 = "${name} is a coder" // eslint-disable-line no-template-curly-in-string 

console.log(str1)
6.ESLint结合自动化工具

在babel前执行

gulp-eslint

webpack ----> npm i eslint-loader --dev

{
  test: /.js$/,
  exclude: /node-modules/,
  use: 'eslint-loader',
  enforce: 'pre'
}
例如reack项目会报错 React/App

npm i eslint-plugin-react

rules: {
  'react/jsx-users-react': 2,
  'react/jsx-users-vars': 2
}

2.集成

extends: [ // 继承共享配置 
  'standard''plugin:react/recommended'
],
7.现代化项目集成eslint

vue

8.ESLint检查TypeScript
parser: '@typescript-eslint/parser',  // 指定语法解析器
9.styleLint
npm i stylelint -D
// npx stylelint ./index.css

.stylelintrc.js

moudle.exports = {
  extends: [
    "stylelint-config-standard",
    "stylelint-config-sass-guidelines"
  ]
}

npm i stylelint-config-sass-guidelines -D

10.prettier

代码自动格式化

npm i prettier -D

npx prettier style.css --write   // 覆盖原文件
npx prettier . --write
11.Git Hooks工作机制

代码提交前强制lint

  • git钩子,每个钩子对应一个任务
  • 通过shell脚本可以编写钩子任务触发时要具体执行的操作

husky可以实现GitHooks的使用需求

git commit之前强制lint

npm i husky -D

package.json

"husky": {
  "hooks": {
    "pre-commit": "npm run test"
  }
}
"scripts": {
   "test": "eslint ./index.js"
}

husky 不能同时代码格式化

npm i lint-staged -d

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

"husky": {
  "hooks": {
    "pre-commit": "npm run precommit"
  }
}