Giter VIP home page Giter VIP logo

father-next's People

Contributors

peachscript avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

father-next's Issues

alias别名有问题

alias: {
"@": "./src"
},

这个是我设置的,
但是打包出来的.js文件并不是走的相对路径而是直接替换
import AreaCascader from "./src/components/AreaCascader";

打包出来的.d.ts是没问题的
import { AreaCascaderProps } from "../AreaCascader";

Vue Support

有考虑过整合 Vue 么,市面上很少支持 Vue 的开发友好的文档工具

Can't resolve @babel/runtime

Module not found: Error: Can't resolve '@babel/runtime/helpers/defineProperty' in '/Users/congxiaochen/Documents/alita/packages/request/dist'
"father": "^4.0.0-alpha.0",
import { defineConfig } from 'father';

export default defineConfig({
    platform:'browser',
    cjs:{
        output:'dist'
    }
});

father build 类型错误输出信息不完整

只生成第一个d.ts文件之后就没有了。tsconfig.json配置都有declararation: true等配置。直接运行tsc命令会报其它错误,但也能正确将其它主要的.d.ts文件都生成出来,除了typings.d.ts没有正确处理。

event - Generate declaration file... 也是输出了的。因此有理由怀疑father build在执行过程中遇到了错误,但吞噬了错误,后续就没有进行了。

father有--verbose这一类的开关没有?找了一遍没发现,建议加上

支持根据 react 版本选择不同的 jsx-runtime

image
如题,我打印出opts,请问presetReact可以从.fatherrc.ts配置吗
{
presetEnv: {},
presetReact: {},
presetTypeScript: {},
pluginTransformRuntime: {},
pluginLockCoreJS: {},
pluginDynamicImportNode: false,
pluginAutoCSSModules: undefined
}

father 4 TODOs

为了和 Umi 主版本保持一致 + 此前做过一版纯 esbuild 的 father 3 alpha,所以计划直接发 father 4 了
father 4 介绍 + 任务集合,欢迎评论参与共建,做之前先认领(编辑主贴,加 @自己 ),避免冲突。

介绍

核心升级

  • 📦 依赖预打包:类似 Umi 3.5/4 的依赖预打包,基于 ncc(打包文件)+ api-extractor(生成类型)
  • ⚔️ 双模式构建
    • Bundle 模式:仅 UMD 产物走 bundle 模式,核心从 rollup 换成宽容度更高的 webpack
    • Bundless 模式:ESM/CJS 产物走 bundless 模式 + 生成 TS 类型定义,默认提供 babel(browser)+ esbuild(node)双编译核心,可基于插件系统注册 swc/tsc 模式
  • 🏗 工程化能力生成:基于 Umi 4 的 generator,提供打包场景的原子工程化能力,例如 g eslint、g test、g commitlint 等
  • 🚨 自动诊断:功能类似 brew doctor,自动对打包场景的常见误区做诊断并给出最佳实践,具备可集成能力(比如集成到 dumi 中)
  • 🚧 Friendly Error:统一处理双模式构建中的常见错误,并给出友好提示,提升使用体验 + 降低答疑成本
  • 🛫 去历史包袱
    • 去 umi-test 集成,改用微生成器
    • 去 storybook 集成,改和 dumi 集成
    • 去 monorepo 支持,改其他工具替代(pnpm?)
    • 去 rollup 核心,改用 webpack

结构图

overview

任务集合

First-time Tasks(⭐️ 代表预估难度)

  • ⭐️ 完善 scheme.ts,father 自身属性都做细致校验,比如 esm: { overrides: { ... } } 下只能配什么,三方仍然用 object
  • ⭐️ dev 下最后一条日志输出时分秒,便于用户确认编译时间
  • -- ↓ 已完成 ↓ --
  • ⭐️ 参考 Umi 实现 defineConfig,用于 .fatherrc.ts 中补全配置类型 @cnyballk #15
  • ⭐️ 完善 version 命令,分行追加输出 @vercel/nccbabelesbuildwebpacktypescript@microsoft/api-extractor 的版本号,并添加测试用例(mock console.log@xiaohuoni #14
  • ⭐️ father build 支持可选 --no-clean 参数,构建前不清空输出目录 @xiaohuoni #12
  • ⭐️ src/types.ts 里完善 @todo 的类型,从 @umijs/utils/compiled@umijs/bundler-utils/compiled 里找 @zzcan #17
  • ⭐️ bundless/index.ts 里对没匹配到配置的文件输出 debug 日志,使用 @umijs/utils 里的 debug,命名空间用 father:bundless @zzcan #18
  • ⭐️⭐️ umd 支持 name 配置项,配置模块挂载的全局变量名称 @xiaohuoni #61
  • ⭐️⭐️ prebundle 配置项添加顶层的 output 配置项 + 去掉 deps 内层的 output 配置项,并添加用例 @zzcan #30
  • ⭐️⭐️ builder/config.tsgetConfigForFile 支持自动获取 tsconfig.json 中的 compilerOptions.paths 并转换为 alias,并添加用例 @xierenyuan #21

RC version related

Release related

  • 指南文档完善 #68
    • 迁移文档
    • 同类工具比较
    • FAQ
  • umd 从 @umijs/bundler-webpack 开放 themelessLoader 配置项
  • 脚手架在 prepublishOnly 脚本里添加 father doctor 命令
  • 推广文章

Core Service

  • 初始化仓库,基于 Umi Core 实现配置读取、命令执行、插件注册 @sorrycc b318356
  • 用户配置类型定义
  • 用户配置 Schema 校验规则 @PeachScript
  • 用户配置支持 extends @PeachScript #11

Builder Module

做组件库源码打包/编译

  • 用户配置转换成 Builder 配置 @PeachScript
  • 构建执行器 (Executor)
  • 基于 webpack loader 的 loader 系统(Bundless)@PeachScript
  • 内置 js 转换器 (Bundless Transformer)
  • 内置打包器 (Bundler,基于 @umijs/bundler-webpack) @PeachScript 5c57c80
  • 编译提速
    • Bundless 持久缓存 #51
    • Bundle 持久缓存
    • Babel 持久缓存(Bundless/Bundle 是否存在共用的可能性?)
    • esbuild 启用增量构建(incremental)

PreCompile Module

做框架/工具的依赖打包,类似 Umi 4

自动化测试

Doctor Module

做项目的前置检查,给出研发建议或者错误

#56

  • 调研/整理
    • father 2 过往 issue 高频问题整理
    • 组件研发场景的最佳实践整理
    • 梳理出前置检查的规则列表(例如无用依赖、package.json 的 sideEffects/main/module/exports 没配对等等) umijs/father#608
  • Rule API 准备
    • addRegularCheckup 添加标准检查(用户配置、最终配置、package.json、tsconfig.json 等)
    • addSourceCheckup 添加源码检查(源码目录的每一个文件)
    • addImportsCheckup 添加 imports 语句检查(import/await import/require
  • 研发建议/错误分析及序列化输出
    • 支持控制台输出
    • 支持 API 调用\供其他框架(例如 dumi)集成到 GUI 中提示开发者

Generate Module

基于 umi g 做原子工程化能力的生成

Changelog

类似 ant-design 仓库的 changelog 生成能力,规划中...

  • WIP

father 4.0.0-rc.2 打包报错

  1. npx create-father test
  2. 选择 nodejs、pnpm
  3. 新建 aaa 目录,随意 export 一个变量

image

4. 执行 pnpm dev

image

5. command + s 保存一下就能复现

No loader is configured for ".png" files

组件里面有png图片,为什么会出现
No loader is configured for ".png" files,
是loder没解析png类型图片吗,感觉好奇怪也分析不出来
4.0.0-rc.3

export default {
esm: {
transformer: "babel",
output: "./es",
},
platform: "node",
alias: {
"@/": "./src/",
},
};

father 打包时会使用 tsconfig 里的 path,更改源码里的内容

版本号: "father": "^4.0.0-rc.8",

问题描述:

"compilerOptions": {
    "paths": {
      "@test/a": ["../a/src/index.ts"],
     }
  }

使用后,使用 father 打包,会发现编译后的文件,会将源码中的import a from @test/a变成 import a from '../a/src/index.ts'

这个实在是有些不合理,为什么father 会去读取 tsconfig.json 里的内容,而不是读取father.rc里的配置做这个事情呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.