Rollup+ts的初始开发环境 | 青训营笔记

70 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第1天

项目简介

这次参加字节青训营,大项目选择的是前端监控系统。前端监控系统可以自动收集、上报、存储Web页面关键数据。

Rollup

打包构建工具采用 Rollup,Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序。与Webpack偏向于应用打包的定位不同,rollup.js更专注于Javascript类库打包。

image.png

创建脚手架

默认以下环境已经安装node、npm、yarn

1.构建基本文件结构

创建项目的文件结构,并且初始化package.json

mkdir web-monitor-sdk
cs web-monitor-sdk
npm init -y

2.初始化typescript环境

安装typescript

yarn add typescript -D

生成typescript配置文件

npx tsc --init

tsconfig.json 配置如下

{
  "include": ["src/", "types/"],
  "compilerOptions": {
    "target": "ES6",
    "module": "ES6",
    "lib": ["DOM", "ES2015"],
    "declaration": true,
    "declarationDir": "./dist/types",
    "strict": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true
  }
}

3.Git

代码存在本地,但为了更好的代码版本管理/备份,将使用 Git 工具并和远程仓库关联起来。

初始化git

git init

创建 .gitignore 文件并忽略那些不需要存入 Git 版本的文件或文件夹

node_modules
dist
yarn-error.log
.DS_Store

4.安装rollup

使用Rollup来作为打包工具,可以帮我们构建出sdk。

yarn add rollup -D
yarn add @rollup/plugin-typescript -D

创建并配置 rollup.config.js

目前打包生成的是iife立即调用函数,配置的全局变量为_monitor,后续可以通过调用全局变量的init方法配置数据上报的地址。

import typescript from '@rollup/plugin-typescript'

const plugins = [typescript()]

export default [
  {
    plugins,
    input: 'src/index.ts',
    output: {
      file: 'dist/monitor.js',
      format: 'iife',
      name: '_monitor',
      sourcemap: true,
    },
  }

修改package.json,配置打包命令。

"scripts": {
    "build": "rollup -c",
 },

5.eslint

团队开发中除了使用ts,还可以使用eslint约束代码风格。

安装eslint

yarn add eslint -D
yarn add @typescript-eslint/parse -D

目录下创建.eslintrc.js文件并配置,后续可以根据团队规范,增加rules下的规则。

module.exports = {
  env: {
    browser: true,
    es6: true,
    node: true,
  },
  parser: '@typescript-eslint/parser',
  extends: ['prettier'],
  parserOptions: {
    sourceType: 'module',
  },
  rules: {
    'prefer-const': 'error',
    'no-console': 'off',
    // 要求使用 ===  !==
    eqeqeq: 'warn',
  },
}

创建.eslintignore让eslint忽略不需要检查的文件

# eslint 忽略检查
node_modules
dist
.yarn-error.log
.DS_Store

6.prettier

前端开发项目中会涉及到一些代码格式问题,比如函数括号后空格,CSS 格式,因此可以借助 Prettier 三方工具来实现团队代码的自动统一。

eslint-config-prettier 解决 ESLint 中的样式规范和 prettier 中样式规范的冲突,以 prettier 的样式规范为准,使 ESLint 中的样式规范自动失效。

安装 prettiereslint-config-prettier

yarn add prettier -D
yarn add eslint-config-prettier -D

创建 .prettierrc.js 并配置

module.exports = {
  tabWidth: 2,
  printWidth: 100,
  singleQuote: true,
  semi: false,
  overrides: [
    {
      files: '*.json',
      options: {
        printWidth: 200,
      },
    },
  ],
  arrowParens: 'always',
}

7.Husky和commitlint

husky 是一个为 git 客户端增加 hook 的工具。安装后,它会自动在仓库中的 .git/ 目录下增加相应的钩子;比如 pre-commit 钩子就会在你执行 git commit 的触发。

那么我们可以在 pre-commit 中实现一些比如 lint 检查单元测试代码美化等操作。

commitlint 可以约束我们在 git commit 命令中提交的msg是否符合一定的规范。

安装依赖

yarn add husky lint-staged -D
yarn add @commitlint/cli @commitlint/config-conventional -D

修改 package.json

"husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
 },
 "commitlint": {
   "extends": [
     "@commitlint/config-conventional"
   ]
 },
 "lint-staged": {
   "*.{ts,js}": [
     "eslint src --fix --ext .ts,.js",
     "prettier --write \"src/**/*\""
   ]
 },

这样配置好了后,开发者在 git commit 时,会首先调用 lint-staged 字段中命令,首先是 prettier 格式化,然后是 ESlint 校验并修复,然后将修改后的文件存入暂存区。

然后是校验 commit message 是否符合规范,符合规范后才会成功 commit

常用的commit type:

类型描述
build编译相关的修改,例如发布版本、对项目构建或者依赖的改动
chore其他修改, 比如改变构建流程、或者增加依赖库、工具等
ci持续集成修改
docs文档修改
feat新特性、新功能
fix修改bug
perf优化相关,比如提升性能、体验
refactor代码重构
revert回滚到上一个版本
style代码格式修改, 注意不是 css 修改
test测试用例修改