1.0.0 • Published 4 months ago

anixuil-js-tool v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

开发文档

工具库的开发文档

参考文章:Rollup + Typescript 打造一个工具库 - 掘金 (juejin.cn)

初始化项目

mkdir anixuil-js-tool # 创建项目文件夹
cd anixuil-js-tool # 进入项目目录
pnpm init # 初始化项目

下载对应的依赖

pnpm i typescript rollup rollup-plugin-dts @rollup/plugin-commonjs @rollup/plugin-alias rollup-plugin-esbuild rollup-plugin-typescript2 @rollup/plugin-babel @babel/core esbuild @rollup/plugin-node-resolve @rollup/plugin-json typedoc -D

一、rollup配置

根目录创建rollup.config.ts

/*
 * @Author: Anixuil
 * @Date: 2023-12-31 11:09:50
 * @LastEditors: Anixuil
 * @LastEditTime: 2023-12-31 12:22:23
 * @Description: rollup配置文件
 */
import dts from "rollup-plugin-dts";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import alias from "@rollup/plugin-alias";
import esbuild from "rollup-plugin-esbuild";
import typescript from "rollup-plugin-typescript2";
import babel from "@rollup/plugin-babel";

const entries = ["src/index.ts"];

const plugins = [
  babel({
    babelrc: false,
    babelHelpers: "bundled",
    presets: [["env", { modules: false }]],
  }),
  resolve({
    preferBuiltins: true,
  }),
  alias(),
  json(),
  commonjs(),
  typescript({
    tsconfigOverride: {
      compilerOptions: {
        declaration: false,
        declarationMap: false,
      },
    },
  }),
    esbuild({
        minify: true,
        target: "ESNext",
        tsconfig: "tsconfig.json",
  }),
];

export default [
  ...entries.map((input) => ({
    input,
    output: [
      {
        file: input.replace(/src/, "dist/").replace(/\.ts$/, ".mjs"),
        format: "esm",
      },
      {
        file: input.replace(/src/, "dist/").replace(/\.ts$/, ".cjs"),
        format: "cjs",
      },
    ],
    external: [],
    plugins,
  })),
  ...entries.map((input) => ({
    input,
    output: {
      file: input.replace(/src/, "dist/").replace(/\.ts$/, ".d.ts"),
      format: "esm",
    },
    external: [],
    plugins: [dts({ respectExternal: true })],
  })),
];
1.0.0

4 months ago