1. Rollup 配置
-
安装依赖
npm install rollup -D npm install @rollup/plugin-commonjs -D npm install @rollup/plugin-node-resolve -D -
修改 package.json
"main": "dist/iscroll-flywen.cjs.js", "module": "dist/iscroll-flywen.esm.js", "browser": "dist/iscroll-flywen.umd.js", "scripts": { "dev": "rollup -c -w", "build": "rollup -c", "test": "node test/test.js" }, -
创建 rollup.config.js
import resolve from "@rollup/plugin-node-resolve"; import commonjs from "@rollup/plugin-commonjs"; import pkg from "./package.json"; export default [ { input: "src/index.js", output: { file: pkg.browser, name: "iscrollFlywen", format: "umd" }, plugins: [ resolve(), commonjs() ] }, { input: "src/index.js", output: [ { file: pkg.main, format: "cjs" }, { file: pkg.module, format: "es" } ] } ]
2. Eslint + Prettier 配置
-
安装 prettier 依赖
npm install prettier -D -
配置 prettier
根目录创建 .prettierrc.json { "endOfLine": "crlf" } -
安装 eslint-config-prettier,eslint-plugin-prettier 依赖
npm install eslint-config-prettier -D npm install eslint-plugin-prettier -D -
安装 eslint 依赖
npm install eslint -D -
配置 eslint
npx eslint --init { plugins: ["prettier"], extends: [...,"prettier"], ignorePatterns: ["/dist/*.js"] } -
安装 lint-staged,husky 依赖
npm install lint-staged husky -D npx husky add .husky/pre-commit "lint-staged" -
配置 pre-commit
编辑 package.json "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "**/*": "prettier --write --ignore-unknown" },
3. Babel 配置
-
下载 @rollup/plugin-babel @babel/core @babel/preset-env 依赖
npm install @rollup/plugin-babel @babel/core @babel/preset-env -D -
配置 rollup.config.js
plugins: [ resolve(), commonjs(), babel({ babelHelpers: "bundled" }) ], -
配置 babel.config.js
module.exports = { presets: ["@babel/env"] };
4. Mocha 配置
-
依赖下载
npm install mocha --save-dev -
配置测试命令
# 编辑 package.json { "scripts": { "test": "mocha" } } -
测试逻辑代码
# 根目录创建 test 文件夹 mkdir test # 创建 test/test.js 文件 var assert = require("assert"); const { describe, it } = require("mocha"); describe("Array", function() { describe("#indexOf()", function() { it("should return -1 when the value is not present", function() { assert.equal([1, 2, 3].indexOf(4), -1); }); }); }); -
测试
npm test -
支持 import
根目录创建 .mocharc.js module.exports = { require: "@babel/register" } -
添加 Babel配置 如上述步骤 3
-
编写测试代码
创建 test/test-import.js import { startsWith } from "../src/utils/strUtil"; const { describe, it } = require("mocha"); const assert = require("assert"); describe( "Babel usage suite", () => { it("should starts with me", () => { let res = startsWith("meta", "me"); assert.equal(res, true); });}); -
测试
npm run test