{"id":22283755,"url":"https://github.com/veaba/pypackjs","last_synced_at":"2025-03-25T19:51:30.269Z","repository":{"id":104582203,"uuid":"215555244","full_name":"veaba/pypackjs","owner":"veaba","description":"从我之前的tensorflow-docs项目衍生出来的Python构建前端工程的概念性实验性项目 :battery:","archived":false,"fork":false,"pushed_at":"2019-12-30T08:31:37.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-30T17:39:38.410Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/veaba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-16T13:28:43.000Z","updated_at":"2019-12-30T08:31:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"c7a81b2e-8a32-484c-8cb6-07d3c1a8b4f2","html_url":"https://github.com/veaba/pypackjs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fpypackjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fpypackjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fpypackjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/veaba%2Fpypackjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/veaba","download_url":"https://codeload.github.com/veaba/pypackjs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245535427,"owners_count":20631293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-03T16:42:00.810Z","updated_at":"2025-03-25T19:51:30.242Z","avatar_url":"https://github.com/veaba.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 基于Python 版本 Node平台前端项目打包器\n\n\u003e 这是一个概念性项目，目前作为tensorflow-docs项目的衍生性项目，诞生的原因是vuepress 打包2.5k的markdown文件需要花费3个小时，这一点无法忍受，而webpack是js平台的\n\n如果使用js生态，通过py多线程的方式会更加好一点吧，类似 分布式构建\n\n## 充电中。。\n- 【 :battery:充电中：项目暂停：】需要补充下python 的class 概念，否则很难下去~~~\n    - 静态方法\n    - 静态属性\n    - 公用方法\n    - 公用属性\n    - classMethod\n    - staticMethod\n    - 类继承\n    - 类的方法调用其他类的方法\n    - 类的方法调用私有方法\n- 【 :battery:充电中：项目暂停：】补充markdown-it 等源码原理\n- python是可以调用js平台的一些资源\n- python将使用线程池来加快处理（虽然有些吃内存）\n- 本项目的理论基础是：对于文件处理来说，万物皆正则(不就是替换的事情嘛))\n\n|进度|pypackjs包名|描述|原理|\n|----|----|----|----|\n||pypackjs-vue|构建vue项目的依赖关系||\n||pypackjs-comporess|压缩js文件和格式化文件|主要是正则格式化|\n||pypackjs-vnode|html转js的vnode||\n||pypackjs-css|css打包工具||\n|进行中...|pypackjs-markdown|markdown转HTML文件、或者markdown直接转AST语法树||\n||pypackjs-url|url路径解析工具||\n||pypackjs-file|处理文件的依赖||\n||pypackjs-ts|处理ts||\n||pypackjs-scss|处理scss文件||\n|||||\n\n\n- 本来是markdown-\u003eHTML-\u003eVNODE、但如果markdown-\u003eVNODE应该会很少省事\n- 额额额额，我的老天鹅，搞一个模块就要翻写好几个别的依赖模块！！！\n- 现在我要用python重写markdown-it(我感觉这个项目可以做十年了)，尽量偷工减料下完成吧！！有点难了\n \n## 参考重点项目\n- [webpack.js](https://github.com/webpack/webpack) JS打包工具\n- [markdown-it](https://github.com/markdown-it/markdown-it) 一款markdown 格式转为HTML\n- [highlight.js](https://github.com/highlightjs/highlight.js) 一款高亮代码\n- [astexplore](https://github.com/fkling/astexplorer) 一个集成多个编程语言或者格式转为其他格式AST的web工具集项目 [A web ast tool：AST explore ](https://astexplorer.net/)\n- [html2text](https://github.com/aaronsw/html2text) 一个Python版本的HTML转markdown工具\n- [prettier](https://prettier.io/) code format\n\n## markdown-it 项目递归结构\n\n\n- markdown-it\n    - linkify-it\n        - ucMicro 完成！ pypack-ucMicro\n\n## 构想\n\n尝试迁移前端项目到Python平台。\n\n当然node也是可以调用子线程来处理的。\n\n如果将node 这一套打包机制迁移到多线程的编程语言平台上，会不会很快呢？\n\n因为对于前端打包机制不太清楚，但理论上应该是：\n\n1. 根据文件构建关系\n2. 构建内联和引用\n3. 根据html结构生成语法树，然后给vue 的SPA应用使用的\n4. vuepress 通过一些工具类（本质上也就是正则的方式）将markdown文件翻译为HTML文件\n\n我的构想是，python其实可以调用js平台处理一些事情，这样是可以配合webpack打包机制+python 多线程（之前享受过线程池带来的快感）来处理文件的转化，速度会不会更快呢？\n\n而重点是:\n1. vuepress 项目文件关系如何连接\n2. 怎么将md文件转为html文件\n3. html转为语法树的js文件\n\n工作内容（几乎要翻写一个webpack了）：\n\n- style load\n- sass load\n- styl load\n- scss load\n- ts load\n- vue load，打包vue项目\n- url load\n- file load\n- markdown-load \u003e\n    - markdown-html\n- html-\u003eAST\n- js-load 解析js文件,但也是可以调用JS引擎做一些事情\n- v-node load\n- python 版本的js压缩工具  \n\n分析了一波，所以需要看一下vuepres 的核心源码是怎么做的，并迁移到python平台\n\n### 目前第一大步骤：build js项目\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Fpypackjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fveaba%2Fpypackjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fveaba%2Fpypackjs/lists"}