插件示例

下面是参考 umi-plugin-locale 的需求添加的一个插件伪代码示例,完整的例子可以查看源代码

  1. export default (api, opts = {}) => {
  2. const { paths } = api;
  3. // 监听插件配置变化
  4. api.onOptionChange((newOpts) => {
  5. opts = newOpts;
  6. api.rebuildTmpFiles();
  7. });
  8. // 添加 Provider 的包裹
  9. api.addRendererWrapperWithComponent(join(__dirname, './locale.js'));
  10. api.addRendererWrapperWithComponent(() => {
  11. if (opts.antd) {
  12. return join(__dirname, './locale-antd.js');
  13. }
  14. });
  15. // 添加对 locale 文件的 watch
  16. api.addPageWatcher(
  17. join(paths.absSrcPath, config.singular ? 'locale' : 'locales'),
  18. );
  19. };