From 84a30df67ab0c8b5c34bb61657f6103775839e82 Mon Sep 17 00:00:00 2001 From: cha0s Date: Sat, 13 Jan 2024 04:46:07 -0600 Subject: [PATCH] feat(fleck): ProcessAssets --- packages/create-app/package.json | 2 -- packages/create-fleck/package.json | 1 - .../template/package.json.noconflict | 6 +--- packages/db/package.json | 5 +-- packages/docker/package.json | 5 +-- packages/dox/package.json | 3 -- packages/electron/package.json | 6 +--- packages/fleck/package.json | 8 +---- .../src/server/build/fleck.webpack.config.js | 3 ++ .../fleck/src/server/build/process-assets.js | 28 +++++++++++++++ packages/fleck/src/server/index.js | 36 +++++++++++++++++++ packages/governor/package.json | 6 +--- packages/react/package.json | 13 +------ packages/redis/package.json | 6 +--- packages/redux/package.json | 7 +--- packages/repl/package.json | 5 +-- packages/server/package.json | 9 +---- packages/socket/package.json | 7 +--- packages/user/package.json | 10 +----- packages/web/package.json | 14 +------- 20 files changed, 81 insertions(+), 99 deletions(-) create mode 100644 packages/fleck/src/server/build/process-assets.js diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 616c743..cfeeadb 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -21,9 +21,7 @@ }, "files": [ "cli.js", - "cli.js.map", "server.js", - "server.js.map", "src", "template" ], diff --git a/packages/create-fleck/package.json b/packages/create-fleck/package.json index f72394a..1297e06 100644 --- a/packages/create-fleck/package.json +++ b/packages/create-fleck/package.json @@ -21,7 +21,6 @@ }, "files": [ "cli.js", - "cli.js.map", "src", "template" ], diff --git a/packages/create-fleck/template/package.json.noconflict b/packages/create-fleck/template/package.json.noconflict index 360f005..30b0576 100644 --- a/packages/create-fleck/template/package.json.noconflict +++ b/packages/create-fleck/template/package.json.noconflict @@ -8,11 +8,7 @@ "test": "flecks test" }, "files": [ - "build", - "index.js", - "index.js.map", - "src", - "test" + "index.js" ], "dependencies": { "@flecks/core": "^2.0.0" diff --git a/packages/db/package.json b/packages/db/package.json index 6c02d88..fe65ad0 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -17,10 +17,7 @@ "test": "flecks test" }, "files": [ - "build", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/docker/package.json b/packages/docker/package.json index 2b5b028..f907d78 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -18,10 +18,7 @@ "test": "flecks test" }, "files": [ - "build", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/dox/package.json b/packages/dox/package.json index 13f54fc..95dc36e 100644 --- a/packages/dox/package.json +++ b/packages/dox/package.json @@ -18,10 +18,7 @@ "test": "flecks test" }, "files": [ - "build", "server.js", - "server.js.map", - "src", "website" ], "dependencies": { diff --git a/packages/electron/package.json b/packages/electron/package.json index 20a264f..3ba2f70 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -17,11 +17,7 @@ "test": "flecks test" }, "files": [ - "build", - "server.js", - "server.js.map", - "src", - "test" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/fleck/package.json b/packages/fleck/package.json index 1c042d4..c9298b8 100644 --- a/packages/fleck/package.json +++ b/packages/fleck/package.json @@ -18,14 +18,8 @@ "test": "flecks test" }, "files": [ - "build", "server/build/fleck.webpack.config.js", - "server/build/fleck.webpack.config.js.map", - "server.js", - "server.js.map", - "src", - "test.js", - "test.js.map" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/fleck/src/server/build/fleck.webpack.config.js b/packages/fleck/src/server/build/fleck.webpack.config.js index 4e152a5..94c46ec 100644 --- a/packages/fleck/src/server/build/fleck.webpack.config.js +++ b/packages/fleck/src/server/build/fleck.webpack.config.js @@ -1,7 +1,10 @@ const flecksConfigFn = require('@flecks/core/server/build/webpack.config'); +const ProcessAssets = require('./process-assets'); + module.exports = async (env, argv, flecks) => { const config = await flecksConfigFn(env, argv, flecks); + config.plugins.push(new ProcessAssets(flecks)); config.stats = flecks.get('@flecks/fleck/server.stats'); return config; }; diff --git a/packages/fleck/src/server/build/process-assets.js b/packages/fleck/src/server/build/process-assets.js new file mode 100644 index 0000000..1bf6913 --- /dev/null +++ b/packages/fleck/src/server/build/process-assets.js @@ -0,0 +1,28 @@ +class ProcessAssets { + + constructor(flecks) { + this.flecks = flecks; + } + + apply(compiler) { + compiler.hooks.thisCompilation.tap('@flecks/fleck/server/build/process-assets', (compilation) => { + compilation.hooks.processAssets.tapAsync( + { + name: '@flecks/fleck/server/build/process-assets', + stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT, + }, + async (assets, callback) => { + await this.flecks.invokeSequentialAsync( + '@flecks/fleck/server.processAssets', + assets, + compilation, + ); + callback(); + }, + ); + }); + } + +} + +module.exports = ProcessAssets; diff --git a/packages/fleck/src/server/index.js b/packages/fleck/src/server/index.js index cf5c0a3..8e46d1f 100644 --- a/packages/fleck/src/server/index.js +++ b/packages/fleck/src/server/index.js @@ -1,5 +1,13 @@ +import {join} from 'path'; + +import {glob} from '@flecks/core/server'; + import commands from './commands'; +const { + FLECKS_CORE_ROOT = process.cwd(), +} = process.env; + export const hooks = { '@flecks/core.commands': commands, '@flecks/core.config': () => ({ @@ -12,4 +20,32 @@ export const hooks = { }, }), '@flecks/core.targets': () => ['fleck'], + '@flecks/fleck/server.processAssets': async (assets, compilation, flecks) => { + const {RawSource} = compilation.compiler.webpack.sources; + const packageJson = assets['package.json']; + const json = JSON.parse(packageJson.source().toString()); + const {files} = json; + // Add defaults. + files.push('build', 'src'); + // Add tests if they exist. + const testFiles = await glob(join(FLECKS_CORE_ROOT, 'test/*.js')); + if (testFiles.length > 0) { + files.push('test', 'test.js'); + } + // Let others have a say. + await flecks.invokeSequentialAsync('@flecks/fleck/server.packageJson', json, compilation); + // Add any sourcemaps. + json.files = json.files + .map((filename) => { + const maybeWithMap = [filename]; + if (compilation.assets[`${filename}.map`]) { + maybeWithMap.push(`${filename}.map`); + } + return maybeWithMap; + }) + .flat(); + // Sort and uniquify. + json.files = [...new Set(json.files.sort((l, r) => (l < r ? -1 : 1)))]; + compilation.updateAsset('package.json', new RawSource(JSON.stringify(json, null, 2))); + }, }; diff --git a/packages/governor/package.json b/packages/governor/package.json index b075b56..ddb5032 100644 --- a/packages/governor/package.json +++ b/packages/governor/package.json @@ -18,12 +18,8 @@ "test": "flecks test" }, "files": [ - "build", "client.js", - "client.js.map", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/react/package.json b/packages/react/package.json index a383531..b0e05ae 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -19,26 +19,15 @@ "test": "flecks test" }, "files": [ - "build", "client.js", - "client.js.map", "context.js", - "context.js.map", "fake-context.js", - "fake-context.js.map", "index.js", - "index.js.map", "router/client.js", - "router/client.js.map", "router/context.js", - "router/context.js.map", "router/index.js", - "router/index.js.map", "router/server.js", - "router/server.js.map", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@babel/preset-react": "^7.23.3", diff --git a/packages/redis/package.json b/packages/redis/package.json index 9ba9061..d61c145 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -17,12 +17,8 @@ "test": "flecks test" }, "files": [ - "build", "session/server.js", - "session/server.js.map", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/redux/package.json b/packages/redux/package.json index 9ec1669..c2c02f4 100644 --- a/packages/redux/package.json +++ b/packages/redux/package.json @@ -18,14 +18,9 @@ "test": "flecks test" }, "files": [ - "build", "client.js", - "client.js.map", "index.js", - "index.js.map", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/repl/package.json b/packages/repl/package.json index ae6f9e8..f79bb5d 100644 --- a/packages/repl/package.json +++ b/packages/repl/package.json @@ -17,10 +17,7 @@ "test": "flecks test" }, "files": [ - "build", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/server/package.json b/packages/server/package.json index d2e75e7..f6485c8 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -19,18 +19,11 @@ "test": "flecks test" }, "files": [ - "build", "entry.js", - "entry.js.map", "index.js", - "index.js.map", "runtime.js", - "runtime.js.map", "server/build/server.webpack.config.js", - "server/build/server.webpack.config.js.map", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/socket/package.json b/packages/socket/package.json index 7c4bee1..18dc406 100644 --- a/packages/socket/package.json +++ b/packages/socket/package.json @@ -18,14 +18,9 @@ "test": "flecks test" }, "files": [ - "build", "client.js", - "client.js.map", "index.js", - "index.js.map", - "server.js", - "server.js.map", - "src" + "server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/user/package.json b/packages/user/package.json index b998eb4..ce168bf 100644 --- a/packages/user/package.json +++ b/packages/user/package.json @@ -18,20 +18,12 @@ "test": "flecks test" }, "files": [ - "build", "client.js", - "client.js.map", "index.js", - "index.js.map", "local.js", - "local.js.map", "local/server.js", - "local/server.js.map", "server.js", - "server.js.map", - "session/server.js", - "session/server.js.map", - "src" + "session/server.js" ], "dependencies": { "@flecks/core": "^2.0.3", diff --git a/packages/web/package.json b/packages/web/package.json index 7a90522..12b571f 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -18,27 +18,15 @@ "test": "flecks test" }, "files": [ - "build", "entry.js", - "entry.js.map", "runtime.js", - "runtime.js.map", "server.js", - "server.js.map", "server/build/entry.js", - "server/build/entry.js.map", "server/build/postcss.config.js", - "server/build/postcss.config.js.map", "server/build/template.ejs", "server/build/tests.js", - "server/build/tests.js.map", "server/build/web.webpack.config.js", - "server/build/web.webpack.config.js.map", - "server/build/web-vendor.webpack.config.js", - "server/build/web-vendor.webpack.config.js.map", - "src", - "tests.js", - "tests.js.map" + "server/build/web-vendor.webpack.config.js" ], "dependencies": { "@babel/parser": "^7.17.0",