0.1.1 • Published 3 years ago

web-magic v0.1.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

tf-magic-runner 组件脚手架

提供在一个或多个组件的组件项目中,或业务项目中,对react的js、ts组件模块进行: 组件打包、本地预览效果启用、一键发布预览系统到生成的脚手架。使前端在提供组件的过程更便捷,高效。

安装到全局

npm i tf-magic-runner -g

脚手架提供的命令

/* 可以在终端输入:magic, 打印以下内容 */

Usage: magic [options] [command]

Options:
  -v, --version                   output the version number
  -h, --help                      display help for command

Commands:
  create <packageName>            clone a package into a newly created directory
  init                            create config file into current project
  start [port=3001] [mock=false]  start run PreviewApp, default use mock data
  pack                            pack components
  publish                         publish PreviewApp(childApp) to online
  help [command]                  display help for command

脚手架的配置

在组件包、或项目的根目录中,需要有一个runner.config.js文件,用于配置构建逻辑。

配置解决了哪些问题 1. 预览子应该发布后的base路径 2. 打包预览子应用时的输出文件目录 3. 预览子应用系统配置: 使脚手架可以找到组件的markdown文件、组件入口文件、组件mock数据的文件;

(如果你的组件的文件结构属于【规范的文件结构】, 那么这项也可以不配置)
  1. webpack中别名的配置及接口代理配置

配置例子

下面我们来看一个例子, 这是执行 magic create *** 后,在生成的组件包中的配置文件。

/* runner.config.js */
const path = require('path');
const package = require('./package.json');
module.exports = {
  base: `/${package.name}/`,  // 子应用base路径, 默认为包名
  outputPath: './dist', // 打包文件输出地址;配置值时,基于项目根目录,默认为:'./libDist'
  themeConfig: {
    root: './', // 设置组件文件存放根目录,配置值时,基于项目根目录(也就是项目根目录)默认为:./src/components
    navs: [
      {
        path: '/',
        mdx: './README.md',
        title: '组件脚手架介绍',
      },
    ],
  },
  webpackConfig: (config, options) => {
    config.resolve.alias = {
      '@/utils/request': options.requestPath, // 用脚手架的requer方法,打包时会忽略此文件
      '@': path.join(__dirname, 'src'),
      [package.name]: path.join(__dirname)
    };
    config.devServer.proxy = {
      '/api': {
        target: 'http://api.tf56.lo/',
        changeOrigin: true,
      },
    };
    return config;
  },
};

配置的API

参数必传类型说明默认值
basestring预览子应用base路径package.json 中的 name 字段的值
outputPathstring打包预览子应用时的输出文件目录'./libDist'
themeConfigObject预览子应用系统配置: 使脚手架可以找到组件的markdown文件、组件入口文件、组件mock数据的文件;{}
themeConfig.rootstring设置组件文件存放根目录, 1)用于查找themeConfig.navs中配置的文件地址的基础路径; 2) 用于自动查找.mdx文件的基础路径'./src/components'
themeConfig.navsArray设置组件目录:如果不想配置此项,请按【规范的文件结构】来放文件此处不配置,将从 themeConfig.root 目录中去查找.mdx 的文件,对组件文件结构有要求
webpackConfig*function可拦载 webpack, 配置 alias、proxy,返回新的 config

themeConfig.navs 的配置

参数必传类型说明默认值
pathstring路由地址当前 mdx 文件的父级目录名称
titlestring组件名称(显示在子系统左则菜单中)当前 mdx 文件的父级目录名称
mdx*stringmd 或 mdx 文件存放路径(相对于 themeConfig.root 的路径)
compontentstring此文件对应的组件路径(相对于 themeConfig.root 的路径),用于 npm 打包时组件取到组件列表不传,默认从 mdx 文件的当前目录中去找 index.(ts、js、jsx、tsx)文件
mockstringmock 文件地址,基于 themeConfig.root 的相对地址不传,默认从 mdx 文件的当前目录中去找mock.(js、ts)

webpackConfig 的配置

webpackConfig是一个回调函数。参数有二个:

参数必传类型说明
config*Objectwebpack的config对像,可以在这个回调函数中重新编写config。一般我们用到的是config.resolve.alias、config.devServer.proxy
options*Object请查看下面的"webpackConfig"

webpackConfig:

参数必传类型说明版本
requestPath*string为脚手架的request函数文件地址,组件中把requestPath配置为@/utils/request别名,打包时会忽略此文件
model*string执行时的环境, production、development、pack0.2.0

规范的文件结构

什么是规范的文件结构:

  1. 每个组件为独立的一个文件夹,并且在项目根据目录"./src/components/"目录下;
  2. 组件中需要有以下三个文件:

    README.mdx // 组件文档的目录

    index.(js|ts|jsx|tsx) // 组件的入口文件

    mock.js // 如果此组件使用了接口,那个这个文件必须有,否则发布到线上,请求不到数据

如图:

文件结构{width=500}

版本更新

v0.3.2 作者:田艳容 发布日期: 2021-01-03

  • magic pack打包组件时,依然保持使用webpack4打包,以兼容webpack4下的项目使用组件包

v0.3.0 作者:田艳容 发布日期: 2020-11-27

  • 执行magic pack输出umd模块时,antd按需依赖加载(antd/lib/*)
  • 获取mock数据优化的优化
  • 升级webpack V4 > webpack V5

v0.2.0 作者:田艳容 发布日期: 2020-07-29

  • 在配置参数webpackConfig: (config, options)中,增加options.model的参数返回
  • 组件magic publish发布后,可直接在子系统中在线提交组件审核

v0.1.9 作者:田艳容 发布日期: 2020-06-28

  • 提供命令有:create、init、start、publish、pack
  • 公共js,css文件dll打包。在主系统中的子系统使用主系统加载的的dll文件(不再单独加载,除非访问子系统时,才加载)