From 9349509ae4258eaae11c95cfff5c766a643a4b97 Mon Sep 17 00:00:00 2001 From: fishbar Date: Tue, 16 May 2023 21:37:02 +0800 Subject: [PATCH 1/7] init v5.x --- README_NEW.md | 74 + TODO.md | 94 + bin/cube-start | 8 +- example/css/test_less.less | 2 +- example/index.html | 3 - example/main.js | 2 +- example/node_modules/@ali/ns_coffee/index.js | 2 +- example/package.json | 26 +- example/test/test_css.js | 21 +- example/test/test_cycle_require.js | 4 +- example/test/test_html.js | 3 +- example/test/test_less.js | 4 +- example/test/test_main.js | 2 +- example/test/test_merge.js | 2 +- example/test/test_module.js | 16 +- example/test/test_override.js | 2 - example/test/test_registered_module.js | 4 +- example/tests.js | 1 - index.js | 2 +- lib/cube/cube_transform_import_plugin.js | 442 +++ lib/cube/ext_api_process.js | 875 ----- lib/cube/ext_api_transfer.js | 160 - lib/cube/gen_ast.js | 614 +++ lib/cube/index.js | 374 +- lib/cube/mixin_api_process.js | 507 +++ lib/cube/mixin_api_transform.js | 244 ++ lib/cube_build_tool.js | 1 + lib/cube_server.js | 170 + lib/processor/css.js | 2 + lib/processor/html.js | 16 - lib/processor/raw.js | 12 +- lib/utils.js | 68 +- package-lock.json | 3603 ++++++++++++++++++ package.json | 20 +- runtime/cube.js | 382 +- runtime/cube_css.js | 31 - runtime/cube_css.min.js | 1 - runtime/cube_css.strict.js | 926 ----- runtime/cube_single.js | 327 -- runtime/cube_single.min.js | 1 - runtime/cube_sync.js | 318 -- runtime/ejs_runtime.js | 207 - runtime/ejs_runtime.min.js | 1 - runtime/jade_runtime.js | 207 - runtime/jade_runtime.min.js | 1 - service.js | 23 +- test/cube_css.js | 2 +- test/index.js | 12 +- test/lib/process.js | 590 +++ 49 files changed, 6753 insertions(+), 3656 deletions(-) create mode 100644 README_NEW.md create mode 100644 TODO.md create mode 100644 lib/cube/cube_transform_import_plugin.js delete mode 100644 lib/cube/ext_api_process.js delete mode 100644 lib/cube/ext_api_transfer.js create mode 100644 lib/cube/gen_ast.js create mode 100644 lib/cube/mixin_api_process.js create mode 100644 lib/cube/mixin_api_transform.js create mode 100644 lib/cube_build_tool.js create mode 100644 lib/cube_server.js delete mode 100644 lib/processor/html.js create mode 100644 package-lock.json delete mode 100644 runtime/cube_css.js delete mode 100644 runtime/cube_css.min.js delete mode 100644 runtime/cube_css.strict.js delete mode 100644 runtime/cube_single.js delete mode 100644 runtime/cube_single.min.js delete mode 100644 runtime/cube_sync.js delete mode 100644 runtime/ejs_runtime.js delete mode 100644 runtime/ejs_runtime.min.js delete mode 100644 runtime/jade_runtime.js delete mode 100644 runtime/jade_runtime.min.js create mode 100644 test/lib/process.js diff --git a/README_NEW.md b/README_NEW.md new file mode 100644 index 0000000..59f0b16 --- /dev/null +++ b/README_NEW.md @@ -0,0 +1,74 @@ +Cube +-------------- + +## Cube运行 + +### 独立Server运行 + +```sh +# 启动一个cube的dev服务,监听到指定端口 +cube run -p $port $static_root_path +``` +详细配置见下方 + +### Middleware集成 + +```js +const Cube = require('node-cube'); +// init cube middleware +let cubeMid = Cube.middleware(option); +// sample app +let app = Express(); +// mount middleware +app.use('/asset', cubeMid) +``` +详细配置见下方 + +### 构建目标代码 + +```sh +cube build $static_root_path -o $release_path +``` +详细配置见下方 + +## Cube配置 + +cube的配置,可以来自两个地方: +* 在静态资源根目录的package.json -> cube 属性中配置 <优先级高> +* 在代码中new Cube的时候传入的option对象 <优先级高> + +### option对象 + +```js +let option = { + // 前端资源的绝对文件路径 + rootPath: "", + // 前端资源的http访问的绝对路径(域名后完整的路径), 注意,在middleware模式确保访问路径对齐 + // 主要是css资源的处理 + httpPath: "", + // 各种类型的处理器 + processors: { + // multi ext to the same processor + ".js, .jsx, .ts, .tsx": "custom-processor", + // multi processors in serial + ".less": ["cube-less", "custom-css-processor"], + // ext to processors with config(if needed), the config is applied by the processor + ".less": [ + ["cube-less", {}], + ["custom-css-processor", {}] + ] + }, + // 当前静态资源的命名空间,适用于多app的资源联合加载使用, ref to former opt.remote + namespace: "", +} +``` + +### 定制processor + +cube支持4种类型的文件: + * script + * style + * json + * + + diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..fdc060c --- /dev/null +++ b/TODO.md @@ -0,0 +1,94 @@ + +## Interface升级 + +### 1. 客户端简化 + +html页面上直接引入entry文件即可: +```html + +``` +不在需要一个单独的cube文件 + +### 2. 服务端配置化 + +```js + +let cube = new Cube({ + /** + * 入口文件列表,从static file root开始算,绝对路径 + * @type {Array} + */ + entrys: [ + '/index.js' + ], + globalName: 'Cube', // default is cube + resourcePath: '/assets', // http加载的resoucepath + debug: true, + version: 12345 +}) + +// 挂载middleware +express.use('/assets', cube.service()); +``` +这些配置都可以编写在静态资源目录下的package.json - "cube" 下 + + +客户端访问路口文件时,会自动添加 cube.js, 以及启动入口。 + +这样对runtime的能力,可以做到插件化支持,还比较方便,同时入口维持和webpack类似 + +### cube_loader机制 + + +* 全局API +```js +// load modules +Cube($name,()=>{}) +Cube($name, [deps...], ()=>{}) + +// app entry +Cube.use($name, (app)=> { + app.run(); +}) +``` + +* 模块内API + +```js +module.exports + +exports + +import -> require + +export -> require + +async('module', (mod)=>{}) +``` + +* CSS加载支持 +转换成inline