0.6.0 • Published 7 months ago

@blackglory/bundle v0.6.0

Weekly downloads
6
License
MIT
Repository
github
Last release
7 months ago

bundle

一种用于描述文档的目录结构, 受到TextBundle的启发.

与TextBundle的不同点:

  • Bundle直接以目录结构在文件系统里表示, 不需要打包.
  • Bundle的文本文件和元数据文件的格式是任意的, 不局限于Markdown和JSON.

Install

npm install --save @blackglory/bundle
# or
yarn add @blackglory/bundle

定义

一个典型的bundle目录结构如下:

.
├── assets
│   ├── foo.png
│   └── bar.png
├── meta.json
└── text.md

bundle目录下的其他文件和目录会被忽略, 从而允许在此存放临时文件, 系统文件和版本控制系统.

/

bundle的根目录, 目录名称是随意的, 只需要便于人类识别.

/meta.{extension}

bundle的元数据, 它是一种能够被解析为键值对字典的文件, 格式不受限制, 取决于具体实现.

如果meta文件不存在, 或meta文件存在多个, 则不会将此目录视作一个bundle.

/meta.{variant}.{extension}

bundle元数据的变体.

相同变体名的meta文件只能存在一个, 否则将被视作无效变体.

/text.{extension}

bundle的文本, 格式不受限制, 取决于具体实现.

如果text文件不存在, 或text文件存在多个, 则不会将此目录视作一个bundle.

/text.{variant}.{extension}

bundle文本的变体.

相同变体名的text文件只能存在一个, 否则将被视作无效变体.

/assets/**/*.{extension}

bundle的资源文件.

API

interface IBundle {
  /**
   * The path of the root directory.
   */
  root: string

  /**
   * The path of the meta file, relative to the root directory.
   */
  meta: string

  /**
   * The path of the text file, relative to the root directory.
   */
  text: string

  /**
   * The paths of assets, relative to the root directory.
   */
  assets: string[]

  /**
   * The variants.
   */
  variants: Record<string, IBundleVariant>
}

interface IBundleVariant {
  /**
   * The path of the meta file variant, relative to the root directory.
   */
  meta?: string

  /**
   * The path of the text file variant, relative to the root directory.
   */
  text?: string
}

buildBundle

/**
 * @throws {NotDirectoryError}
 * @throws {NoMetaFileError}
 * @throws {NoTextFileError}
 * @throws {TooManyMetaFilesError}
 * @throws {TooManyTextFilesError}
 */
function buildBundle(pathname: string): Promise<IBundle>

isBundle

function isBundle(pathname: string): Promise<boolean>

findAllBundles

function findAllBundles(pathname: string): AsyncIterable<IBundle> 
0.6.0

7 months ago

0.5.2

2 years ago

0.5.0

3 years ago

0.5.1

3 years ago

0.4.4

3 years ago

0.4.3

3 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.4.2

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.1.10

4 years ago

0.2.0

4 years ago

0.1.9

4 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago