open-index/open-npm huggingface dataset:
npm package: @mshipov/typedoc-plugin-monorepo
Description: Optimize Typedoc documentation output for libraries that are organized in a monorepo.
Author: Hendrik Liebau
Latest version: 0.2.2

## @strictsoftware/typedoc-plugin-monorepo

### What

A plugin for [TypeDoc](http://typedoc.org)

When trying to unify documentation for multiple modules residing inside a shared source repository, the default way TypeDoc assignes top-level module names might not satisfy.

This plugin allows you to specify a regular expression with a capture group. This is then used to collect related items into one module.

This plugin is inspired by, and based on, [asgerjensen/typedoc-plugin-external-module-map](https://github.com/asgerjensen/typedoc-plugin-external-module-map). However, this plugin will automagically rename top-level modules discovered to a new "Package" type, and auto-discover and display READMEs for the individual packages. Furthermore, these packages are used as top-level entries in the table of contents.

This plugin is intended for monorepos that deliver more than one NPM package in a single Git repository.

Suppose you have

```
packages/@namespace/package-1/index.ts
packages/@namespace/package-1/src/otherfiles.ts
packages/@namespace/package-2/index.ts
packages/@namespace/package-2/src/otherfiles.ts
```

TypeDoc will create four "Modules", named for each .ts file.

- "@namespace/package-1/index"
- "@namespace/package-1/src/otherfiles"
- "@namespace/package-2/index"
- "@namespace/package-2/src/otherfiles"

This plugin allows each file to specify the TypeDoc Module its code should belong to. If multiple files belong to the same module, they are merged.

This allows more control over the modules that TypeDoc generates.
Instead of the four modules above, we could group them into two:

- @namespace/package-1
- @namespace/package-2

In addition to grouping these modules, the plugin will attempt to discover README files in each module root to display with the documented package. In this plugin, top-level typedoc "modules" are renamed to the more semantic name "packages" in generated documentation.

### Installing

TypeDoc >=0.11 has the ability to discover and load typedoc plugins found in node_modules.
Simply install the plugin and run typedoc.

```
npm install --save @strictsoftware/typedoc-plugin-monorepo
typedoc
```

### Using

This plugin adds some new options

#### --external-modulemap
```
--external-modulemap  ".*packages\/(@namespace\/[^\/]+)\/.*"
```

If you specify it from the command line, be sure to escape the input string so bash doesn't expand it.

It is probably easier to create a typedoc options file (typedoc.json) and add it there:

```
{
  "name": "My Library",
  "out": "doc",
  "theme": "default",
  "preserveConstEnums": "true",
  "exclude": "*.spec.ts",
  "external-modulemap": ".*packages\/(@namespace\/[^\/]+)\/.*",
  "excludeExternals": false
}
```

#### --inline-references

Replace references with actual target declarations in output project symbols. This is required
when re-exports with same name are presented in project files because this will lead to collisions in output
symbols map and references links would target to nowhere.
npm package: @mshksdk/theme
Description: Discuz! Q 公共样式库
Author: angelzou
Latest version: 0.0.1

# Discuz 主题处理统一项目
> 主题样式
## 一、项目构建

```bash
# 将 scss 文件转换为 css 文件
$ npm run build
```

## 二、使用

1. 安装

```bash
$ npm install @mshksdk/theme --save
```

2. 一次性引用
- 使用 `Sass` 引用打包之后的 `css` 文件
```css
@import '@mshksdk/theme';
```

- 使用 `Sass` 引用打包之前的 `scss` 文件
```scss
@import '@mshksdk/theme/src/index.scss';
```

1. 按需引用
- 使用 `Sass` 引用打包之后的 `css` 文件，假如使用了 `tag` 和 `button` 组件
```css
@import '@mshksdk/theme/dist/theme/index.css'; /* 主题文件，必须引用，只用引用一次 */
@import '@mshksdk/theme/dist/componnets/tag.css';
@import '@mshksdk/theme/dist/componnets/button.css';
```

- 使用 `Sass` 引用打包之前的 `scss` 文件，假如使用了 `tag` 和 `button` 组件
```css
@import '@mshksdk/theme/src/theme/index.scss'; /* 主题文件，必须引用，只用引用一次 */
@import '@mshksdk/theme/src/componnets/tag.scss';
@import '@mshksdk/theme/src/componnets/button.scss';
```

## 三、对于二开需要替换模板颜色或者需要切换主题的方法如下
> 因为使用的是 `css` 变量的方法，目前想要更改项目中颜色或者想要实现切换主题的方法参考如下

1. 颜色值请看 `src/theme/_default.scss` 文件，如果想要更改颜色值

- 1）**去掉**本身引入的模板文件代码：`@import '@mshksdk/theme/src/index.scss';`
- 2）从 `src/theme/_default.scss` 文件中复制一份到自己的项目中，比如命名为 `light.scss` 文件，然后更改自己想要更改的颜色值
- 3）编写如下代码到自己项目的样式入口文件中：

    ```scss
    // @import '@mshksdk/theme/src/theme/index.scss';
    /**
     * 遍历 css 变量的方法
     */
    @import '@mshksdk/theme/src/mixins/_traverse-css-var.scss';
    /**
     * 修改主题。
     * 从 mini 或者 web 目录下面的 node_modules/discuzq/theme/src/theme/_default.scss 文件中复制一份到自己的样式文件 light.scss 中，然后在入口文件中引入。
     */
    @import './light.scss';

    /**
     * 最后在页面根元素引入该 css 变量的样式即可，如下所示
     */
    body,
    page {
      @include traverse-css-var($light);
    }
    ```

2. 主题切换实现方法

    具体步骤其实和想要自定义颜色的方法差不多，这个直接给出入口文件需要替换的代码（也有详细的注释说明），如下：

    ```scss
    // @import '@mshksdk/theme/src/theme/index.scss';

    /**
    * 如果要实现自身的主题切换的话，需要进行如下改造
    * 1. 第一步是修改样式文件
    * 2. 第二步是在自己的项目中增加一个切换主题的入口，需要结合 common/store/site 中的 changeTheme 方法进行处理，默认的主题定义的是：APP_THEME.light
    */
    // 这个默认主题定义的变量是：$light
    @import '@mshksdk/theme/src/theme/_default.scss';
    /**
    * 主题的 mixin 方法，主要是输出不同主题的对应的 css 变量
    * themify($themes, $style: 'dzq-theme') // 第一个参数传入定义的主题，第二个参数传入定义的样式类的前缀，可以直接使用默认的，这样就不用更改项目了。
    */
    @import '@mshksdk/theme/src/mixins/_themify.scss';
    /**
    * 引入自己自定义或者修改的主题。
    * 从 mini 或者 web 目录下面的 node_modules/discuzq/theme/src/theme
    */
    @import './dark.scss';

    $themes: (
      light: $light,
      dark: $dark,
    );

    body,
    page {
      @include themify($themes);
    }

    ```

## TODO
- [ ] SCSS 变量混合生成颜色系（mix函数）。这个需要结合编译 + 远程请求新的样式，会涉及到切换主题的方法
- [ ] 更改切换主题的方法


## 参考
1. [css-vars-ponyfill] css变量 IE 兼容处理库





[css-vars-ponyfill]: https://www.npmjs.com/package/css-vars-ponyfill