命令行工具

umi build

编译构建 web 产物。通常需要针对部署环境,做特定的配置和环境变量修改。相关详情,请查阅部署

  1. $ umi build
  2. Webpack
  3. Compiled successfully in 5.54s
  4. DONE Compiled successfully in 5547ms
  5. Build success.
  6. Done in 9.77s.

默认产物输出到项目的 dist 文件夹,你可以通过修改配置 outputPath 指定产物输出目录。默认编译时会将 publish 文件夹内的所有文件,原样拷贝到 dist 目录,如果你不需要这个特性,可以通过配置 chainWebpack 来删除它。

  1. export default {
  2. chainWebpack(memo, { env, webpack }) {
  3. // 删除 umi 内置插件
  4. memo.plugins.delete('copy');
  5. }
  6. }

注意:如果 publish 里面存在产物同名文件,如 index.html,将会导致产物文件被覆盖。

umi dev

启动本地开发服务器进行项目的开发调试

  1. $ umi dev

启动在浏览器中运行的开发服务器,并监视源文件变化,自动热加载。

默认使用 8000 端口,如果 8000 端口被占用,将会使用 8001 端口,以此类推。你可以通过设置环境变量 PORT 来指定开发端口号。更多环境变量配置,请查阅环境变量

  1. umi dev
  2. Starting the development server...
  3. Webpack
  4. Compiled successfully in 2.27s
  5. DONE Compiled successfully in 2276ms
  6. App running at:
  7. - Local: http://localhost:8000 (copied to clipboard)
  8. - Network: http://192.168.50.236:8000

开启开发服务还会同时提供一个 Network 的链接,你可以在能访问到你当前运行设备的其他设备中预览页面。

注意:如果是在开启了VPN,或者虚拟机等复杂的网络环境中,这个地址很可能会错误。你可以通过访问你真实可用 ip 的对应端口号来访问开发页面。

umi generate

内置的生成器功能,内置的类型有 page ,用于生成最简页面。支持别名调用 umi g

  1. $ umi generate <type> <name> [options]

这个命令支持扩展,通过 api.registerGenerator 注册,你可以通过插件来实现自己常用的生成器。

  1. import { Generator, IApi } from 'umi';
  2. const createPagesGenerator = function ({ api }: { api: IApi }) {
  3. return class PageGenerator extends Generator {
  4. constructor(opts: any) {
  5. super(opts);
  6. }
  7. async writing() {}
  8. };
  9. }
  10. api.registerGenerator({
  11. key: 'pages',
  12. Generator: createPageGenerator({ api }),
  13. });
  1. umi generate page pageName
  2. umi generate page pageName --typescript
  3. umi generate page pageName --less

更多使用类型和参数,请查阅提供生成器扩展的插件的文档。

umi plugin

快速查看当前项目使用到的所有的 umi 插件。

  1. $ umi plugin <type> [options]

当前支持的 typelist,可选参数 key

  1. $ umi plugin list
  2. Plugins:
  3. - @umijs/preset-built-in (preset)
  4. - ./node_modules/umi/lib/plugins/umiAlias
  5. Done in 2.27s.
  1. $ umi plugin list --key
  2. Plugins:
  3. - @umijs/preset-built-in [key: builtIn] (preset)
  4. - ./node_modules/umi/lib/plugins/umiAlias [key: builtIn]
  5. Done in 2.27s.

umi help

umi 命令行的简易帮助文档。

  1. $ umi help <command>

umi version

查看当前使用的 umi 的版本号,可以使用别名 -v 调用。

  1. $ umi version
  2. $ umi -v

umi webpack

查看 umi 使用的 webpack 配置。

  1. $ umi webpack [options]

参数,

可选参数 说明
rules 查看 webpack.module.rules 配置详情
rule=[name] 查看 webpack.module.rules 中某个规则的配置详情
plugins 查看 webpack.plugins 配置详情
plugin=[name] 查看 webpack.plugins 中某个插件的配置详情

示例,

  1. $ umi webpack
  2. {
  3. mode: 'development',
  4. devtool: 'cheap-module-source-map',
  5. node:{ },
  6. output:{ },
  7. resolve:{ },
  8. module:{
  9. rules:[ ]
  10. },
  11. plugins:[ ],
  12. entry:{ }
  13. }
  14. $ umi webpack --rules
  15. [
  16. 'js',
  17. 'ts-in-node_modules',
  18. 'js-in-node_modules',
  19. 'images',
  20. 'svg',
  21. 'fonts',
  22. 'plaintext',
  23. 'css',
  24. 'less'
  25. ]
  26. $ umi webpack --rule=js
  27. {
  28. test: /\.(js|mjs|jsx|ts|tsx)$/,
  29. include: [ 'xx/umi' ],
  30. exclude: [ /node_modules/ ],
  31. use:[
  32. {
  33. loader:'xx/babel-loader/lib/index.js',
  34. options: [Object]
  35. }
  36. ]
  37. }
  38. $ umi webpack --plugins
  39. [
  40. 'extract-css',
  41. 'define',
  42. 'progress',
  43. 'copy',
  44. 'friendly-error',
  45. 'hmr'
  46. ]
  47. $ umi webpack --plugin=extract-css
  48. MiniCssExtractPlugin {
  49. options:{
  50. filename: '[name].css',
  51. moduleFilename: [Function: moduleFilename],
  52. ignoreOrder: true,
  53. chunkFilename: '[name].chunk.css'
  54. }
  55. }