tiddly-gittly / Epub2twpub

Epub to twpub 转换工具。
BSD 3-Clause "New" or "Revised" License
6 stars 0 forks source link

构建bundle #22

Closed Zacharia2 closed 1 year ago

Zacharia2 commented 1 year ago

我知道了,因为它本身就被构建成功且捆绑为一个单文件,由于被导入,所以被modern识别为用户编写的js或ts文件,然后被包含进插件中。

https://www.javascriptcn.com/post/61831

什么是 dts-bundle-generator

dts-bundle-generator 是一个用于生成 TypeScript 模块的声明文件(.d.ts 文件)的 npm 包。使用该包可以方便地将 TypeScript 模块打包成一个具有完整类型声明的模块,方便其他开发者在 TypeScript 环境下使用你的模块。

如何使用 dts-bundle-generator

安装

要使用 dts-bundle-generator,首先需要安装该包。可以通过以下命令将其安装到项目中:

npm install dts-bundle-generator --save-dev

配置

安装好 dts-bundle-generator 后,需要对其进行配置以便生成正确的声明文件。

在项目的根目录下创建一个名为 dts-bundle.json 的配置文件,并填写以下内容:

{
    "main": "dist/index.js",
    "name": "my-module",
    "out": "dist/index.d.ts",
    "removeSource": true,
    "exclude": [
        "node_modules/**/*",
        "**/__tests__/**/*"
    ]
}

其中:

生成类型声明文件

配置好 dts-bundle.json 后,可以通过以下命令生成类型声明文件:

dts-bundle-generator

如果想要在运行构建命令时自动生成类型声明文件,可以将以上命令添加到 package.json 中的 scripts 中:

{
  "scripts": {
    "build": "tsc && dts-bundle-generator"
  }
}

示例代码

以下是一个使用了 dts-bundle-generator 的示例代码:

// src/index.ts

export const add = (a: number, b: number): number => {
  return a + b;
};

export const subtract = (a: number, b: number): number => {
  return a - b;
};
// dts-bundle.json

{
    "main": "dist/index.js",
    "name": "math-utils",
    "out": "dist/index.d.ts",
    "removeSource": true,
    "exclude": [
        "node_modules/**/*",
        "**/__tests__/**/*"
    ]
}
// package.json

{
  "name": "math-utils",
  "version": "1.0.0",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc && dts-bundle-generator"
  },
  "dependencies": {
    ...
  },
  "devDependencies": {
    "typescript": "^4.4.2",
    "dts-bundle-generator": "^1.7.1"
  }
}

在这个示例中,我们使用了 dts-bundle-generator 自动生成 math-utils 模块的类型声明文件,方便其他 TypeScript 开发者使用我们的模块。

总结

dts-bundle-generator 为 TypeScript 模块的开发者提供了一个方便快捷的工具,可以使开发者更容易地生成完整的类型声明文件。我们可以通过以上步骤使用 dts-bundle-generator,将我们的 TypeScript 模块转化为一个更加完善的工具,让其他开发者更容易地使用我们的模块。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/61831

Zacharia2 commented 1 year ago

https://cn.vitejs.dev/guide/features.html

Zacharia2 commented 1 year ago

类型封装。封装为一个js对象,并提供一些对象方法和一个构造方法。使外部能够调用。

Zacharia2 commented 1 year ago
/*
Convert an EPUB file into a TWPUB plugin
*/

const fs = require("fs"),
    path = require("path"),
    {promisify} = require("util"),
    readFileAsync = promisify(fs.readFile),
    writeFileAsync = promisify(fs.writeFile),
    {ArgParser} = require("./utils"),
    {EpubReader} = require("./epub-reader"),
    {TwpubPlugin} = require("./twpub-plugin");

module.exports = class Epub2twpub{

    constructor(epub, output) {
        // Get our app version number
        this.version = require("../package.json").version;

        this.args[‘epub’] = epub;
        this.args[‘output’] = output;
    }

    async main() {
        // Setup the epub
        this.epubReader = new EpubReader(this);
        await this.epubReader.load(this.args.epub);
        // Create the twpub plugin
        this.twpubPlugin = new TwpubPlugin(this,{epubReader: this.epubReader});
        // Convert the epub
        this.twpubPlugin.convertEpub();
        // Save the twpub plugin
        await writeFileAsync(this.args.output,this.twpubPlugin.getPluginText(),"utf8");
    }
}

const app = new Epub2twpub();

// Notice the first uppercase letter, since User is a class
const User = require("./user.js");

// Create an object from this class
const johnDoe = new User("John", "Doe");

// Use the created object
console.log(johnDoe.describe());
Zacharia2 commented 1 year ago
export type DriveStep = {
  element?: string | Element;
  onHighlightStarted?: DriverHook;
  onHighlighted?: DriverHook;
  onDeselected?: DriverHook;
  popover?: Popover;
};

export function driver(options: Config = {}) {
  configure(options);

  function handleClose() {
    if (!getConfig("allowClose")) {
      return;
    }

    destroy();
  }
}

export type Driver = ReturnType<typeof driver>;