From 0b9c9a69171c65ae80a5ab1953e22171bc0d7a2e Mon Sep 17 00:00:00 2001 From: isk <0xisk> Date: Tue, 14 Nov 2023 13:23:57 +0100 Subject: [PATCH] feat: copy docs to the dist --- packages/demo/package.json | 7 ++-- packages/demo/scripts/preBuild.sh | 16 -------- packages/demo/webpack.config.js | 18 ++++----- packages/demo/webpack.prod.js | 67 +++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 29 deletions(-) delete mode 100755 packages/demo/scripts/preBuild.sh create mode 100644 packages/demo/webpack.prod.js diff --git a/packages/demo/package.json b/packages/demo/package.json index dd4fb23c0..9b4158c12 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -3,10 +3,9 @@ "private": true, "version": "0.4.3", "scripts": { - "prebuild": "./scripts/preBuild.sh", - "start": "pnpm run prebuild && webpack serve --config webpack.dev.js --mode development", - "build": "pnpm run prebuild && parcel build public/index.html", - "build:e2e": "pnpm run prebuild && pnpm run build", + "start": "webpack serve --config webpack.dev.js --mode development", + "build": "webpack --config webpack.prod.js --mode=production", + "build:e2e": "pnpm run build", "dev": "pnpm run build", "lint": "eslint . --ext .js,.jsx,.ts,.tsx", "lint:fix": "pnpm run lint --fix", diff --git a/packages/demo/scripts/preBuild.sh b/packages/demo/scripts/preBuild.sh deleted file mode 100755 index 341d6dac6..000000000 --- a/packages/demo/scripts/preBuild.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -CURRENT_DIR=$(pwd) - -# Source directory containing codeExamples (assuming it's in the parent directory) -SOURCE_DIR="$CURRENT_DIR/src/pages" - -# Destination directory to copy codeExamples -DEST_DIR="$CURRENT_DIR/public/docs" - -mkdir -p "$DEST_DIR" - -# Find all files in codeExamples directories and copy them to DEST_DIR -find "$SOURCE_DIR" -type f \( -name "*.ts" -o -name "*.md" \) -path "*/docs/*" -exec cp {} "$DEST_DIR" \; - -echo "Code examples copied to $DEST_DIR." diff --git a/packages/demo/webpack.config.js b/packages/demo/webpack.config.js index e01ac49a5..ecab83352 100644 --- a/packages/demo/webpack.config.js +++ b/packages/demo/webpack.config.js @@ -1,5 +1,5 @@ const HtmlWebpackPlugin = require("html-webpack-plugin"); - +const CopyWebpackPlugin = require("copy-webpack-plugin"); const path = require("path"); module.exports = { @@ -9,14 +9,14 @@ module.exports = { path: path.resolve(__dirname, "dist"), }, plugins: [ - // new CopyWebpackPlugin({ - // patterns: [ - // { - // from: `${__dirname}/src/components/**/docs/*.+(ts|md)`, - // to: path.resolve(__dirname, "./public/docs"), - // }, - // ], - // }), + new CopyWebpackPlugin({ + patterns: [ + { + from: `${__dirname}/src/pages/**/docs/*.+(ts|md)`, + to: `./docs/[name][ext]`, + }, + ], + }), new HtmlWebpackPlugin({ template: "./public/index.html", }), diff --git a/packages/demo/webpack.prod.js b/packages/demo/webpack.prod.js new file mode 100644 index 000000000..8e9ae8373 --- /dev/null +++ b/packages/demo/webpack.prod.js @@ -0,0 +1,67 @@ +const ImageMinimizerPlugin = require("image-minimizer-webpack-plugin"); +const TerserPlugin = require("terser-webpack-plugin"); +const { merge } = require("webpack-merge"); + +const common = require("./webpack.config"); + +module.exports = merge(common, { + mode: "production", + performance: { + hints: false, + maxEntrypointSize: 512000, + maxAssetSize: 512000, + }, + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + terserOptions: { + compress: true, + }, + extractComments: false, + }), + new ImageMinimizerPlugin({ + minimizer: { + implementation: ImageMinimizerPlugin.svgoMinify, + options: { + encodeOptions: { + multipass: true, + plugins: [ + { + name: "preset-default", + params: { + overrides: { + removeViewBox: false, + }, + }, + }, + ], + }, + }, + }, + }), + new ImageMinimizerPlugin({ + minimizer: { + implementation: ImageMinimizerPlugin.sharpMinify, + options: { + encodeOptions: { + jpeg: { + quality: 100, + }, + webp: { + lossless: true, + }, + avif: { + lossless: true, + }, + // by default 100% quality + png: {}, + // by default 100% quality + gif: {}, + }, + }, + }, + }), + ], + }, +});