Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature & todo #3

Open
20 of 35 tasks
Cyberhan123 opened this issue Sep 30, 2021 · 0 comments
Open
20 of 35 tasks

feature & todo #3

Cyberhan123 opened this issue Sep 30, 2021 · 0 comments

Comments

@Cyberhan123
Copy link
Contributor

Cyberhan123 commented Sep 30, 2021

路线图

重要的第一步

  • Toy webpack
  • react 成功运行 ~~

考察插件

伪代码逻辑:

package xxxPlugin

import (
	"fmt"
	"github.com/seasonjs/espack/pkg/api/plugin"
)

func init() { plugin.Register("espack_plugin_corejs", NewPlugin) }
func NewPlugin(opt interface{}) *interface{} {
	fmt.Println("plugin is regist in espack")
	return nil
}
{
  "entry": {
    "main": "index.jsx"
  },
  "output": "dist",
  "plugins": [
    {
      "name": "espack_plugin_corejs",
      "option": {
        "xxx": "xxx",
        "others": "this is others option"
      }
    }
  ]
}

调研npm替代方案

  • 调研npm代替方案 js.mod -> go mod like?

  • 调研npm元数据api获取

  • 调研unpack方式获取,不大可行,es module 太少(可能会成未来的答案,但是现在我选npm)

  • 调研go解压tgz格式文件

  • 调研go.mod 解析生成原理

  • 获取元数据

  • 解决循环依赖

  • 根据js.mod依赖生成js.sum

  • 根据package.json 生成js.mod

  • 根据解析好的数据下载tarball

  • 处理espack install 命令逻辑

  • 处理单个包下载命令逻辑

  • 增加更多go mod like && npm like && yarn like 命令

  • 完全摆脱对node_model的依赖优先考虑 统一保存,为了兼容性需要增加一个转译的cache,将下载的非esm模块提前转义为esm

  • 调研Import maps vs js.mod的可能性

  • 调研 其他多包其他 vs js.work的可能性

调研esbuild ast语法析出方案

  • 放弃通过esbuild 生成的方案
  • 转变为通过改造github.com/tdewolff/parse 进行Lexer,并自行根据estree生成ast
  • estree 数据结构定义
  • Lexer 施工
  • Parser 施工

需要消灭的问题

  • 逐步解决代码中的TODO注释
  • 补充测试,增加代码覆盖率
  • 命名更符合go风格(x),更加c-like(√)
  • 内部代码调整
  • 注释,文档国际化

移除gin框架,它build之后过于大了->切换到liteS(gin lite)

迁移之后,没有了冗余的以下依赖,应用程序大小缩小了5M~~

github.com/gin-contrib/sse v0.1.0
github.com/go-playground/validator/v10 v10.9.0
github.com/goccy/go-json v0.7.8
github.com/json-iterator/go v1.1.12
github.com/mattn/go-isatty v0.0.14
github.com/stretchr/testify v1.7.0
github.com/ugorji/go/codec v1.2.6
google.golang.org/protobuf v1.27.1
gopkg.in/yaml.v2 v2.4.0
  • 完美运行起gin的lite版
  • 移除过重依赖
  • 内部日志改造
  • 完全改造为适合从内存/静态文件夹获取的server

调研go 18的泛型和monorepo

https://go.googlesource.com/proposal/+/master/design/45713-workspace.md
1.现在的go的ast结构还是不让人满意
2.现在的项目层级太深了

支持p2p 发布与下载包功能

https://github.com/anacrolix/torrent

ts 语言特性兼容

  • 支持所有的类型编程特性

css 特性

assest资源处理

eslint特性支持

@Cyberhan123 Cyberhan123 pinned this issue Nov 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant