minista 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -39,8 +39,8 @@ public # Copy dist
39
39
  src
40
40
  └── pages # Required!
41
41
  ├── about
42
- │ └── index.tsx
43
- └── index.tsx
42
+ │ └── index.jsx
43
+ └── index.jsx
44
44
  ```
45
45
 
46
46
  <!-- prettier-ignore -->
@@ -105,6 +105,9 @@ export default defineConfig({
105
105
  outDir: "assets/fonts", // string
106
106
  outName: "[name]", // string
107
107
  },
108
+ svgr: {
109
+ svgrOptions: {}, // https://react-svgr.com/docs/options/
110
+ },
108
111
  icons: {
109
112
  useSprite: true, // boolean
110
113
  srcDir: "src/assets/icons", // string
@@ -153,9 +156,9 @@ export default defineConfig({
153
156
 
154
157
  ## Media
155
158
 
156
- - v1
157
- - [React で書ける SSG 改善点と今後について - minista v1](https://zenn.dev/qrac/articles/a24de970148c7e)
158
- - [React(JSX)で書けるコーディング用 SSG - minista v0](https://zenn.dev/qrac/articles/7537521afcd1bf)
159
+ - [Vite と esbuild を組み込み React 製 SSG を再構築 - minista v2](https://zenn.dev/qrac/articles/fbbbe7ccc3bdb1)
160
+ - [React で書ける SSG 改善点と今後について - minista v1](https://zenn.dev/qrac/articles/a24de970148c7e)
161
+ - [React(JSX)で書けるコーディング用 SSG - minista v0](https://zenn.dev/qrac/articles/7537521afcd1bf)
159
162
 
160
163
  ## Respect
161
164
 
package/client.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ declare module "*.svg" {
2
+ import * as React from "react"
3
+
4
+ const ReactComponent: React.FunctionComponent<
5
+ React.SVGProps<SVGSVGElement> & { title?: string }
6
+ >
7
+ export default ReactComponent
8
+ }
9
+
10
+ declare module "*?raw" {
11
+ const src: string
12
+ export default src
13
+ }
package/dist/build.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import type { Options as MdxOptions } from "@mdx-js/esbuild";
2
+ import type { Config as SvgrOptions } from "@svgr/core";
2
3
  import type { InlineConfig } from "vite";
3
4
  import type { MinistaResolveConfig, RootStaticContent, RootJsxContent, GlobalStaticData, GetGlobalStaticData, PageJsxContent, StaticData, StaticDataItem, GetStaticData } from "./types.js";
4
5
  export declare function buildTempPages(entryPoints: string[], buildOptions: {
5
6
  outBase: string;
6
7
  outDir: string;
7
8
  mdxConfig: MdxOptions;
9
+ svgrOptions: SvgrOptions;
8
10
  }): Promise<void>;
9
11
  export declare function buildStaticPages(entryPoints: string[], tempRootFilePath: string, buildOptions: {
10
12
  outBase: string;
package/dist/build.js CHANGED
@@ -27,7 +27,7 @@ import { build as esBuild } from "esbuild";
27
27
  import mdx from "@mdx-js/esbuild";
28
28
  import { build as viteBuild, mergeConfig as mergeViteConfig } from "vite";
29
29
  import { systemConfig } from "./system.js";
30
- import { resolvePlugin } from "./esbuild.js";
30
+ import { resolvePlugin, svgrPlugin, rawPlugin } from "./esbuild.js";
31
31
  import { renderHtml } from "./render.js";
32
32
  import { slashEnd } from "./utils.js";
33
33
  const __filename = url.fileURLToPath(import.meta.url);
@@ -65,7 +65,9 @@ async function buildTempPages(entryPoints, buildOptions) {
65
65
  mdx(buildOptions.mdxConfig),
66
66
  resolvePlugin({
67
67
  "react/jsx-runtime": "react/jsx-runtime.js"
68
- })
68
+ }),
69
+ svgrPlugin(buildOptions.svgrOptions),
70
+ rawPlugin()
69
71
  ]
70
72
  }).catch(() => process.exit(1));
71
73
  }
@@ -262,7 +264,7 @@ async function buildViteImporterRoutes(config) {
262
264
  });
263
265
  const replaceFileNameArrayStr = replaceFileNameArray.join("\n ");
264
266
  const template = `export const getRoutes = () => {
265
- const ROUTES = import.meta.globEager("/${pagesDir}**/[a-z[]*.{${pagesExtStr}}")
267
+ const ROUTES = import.meta.globEager("/${pagesDir}**/*.{${pagesExtStr}}")
266
268
  const routes = Object.keys(ROUTES).map((route) => {
267
269
  const routePath = route
268
270
  ${replacePagesStr}
package/dist/config.js CHANGED
@@ -49,6 +49,9 @@ const defaultConfig = {
49
49
  outDir: "assets/fonts",
50
50
  outName: "[name]"
51
51
  },
52
+ svgr: {
53
+ svgrOptions: {}
54
+ },
52
55
  icons: {
53
56
  useSprite: true,
54
57
  srcDir: "src/assets/icons",
package/dist/esbuild.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import type { Plugin } from "esbuild";
2
+ import type { Config as SvgrOptions } from "@svgr/core";
2
3
  /*! Fork: esbuild-plugin-resolve | https://github.com/markwylde/esbuild-plugin-resolve */
3
4
  export declare function resolvePlugin(options: {
4
5
  [key: string]: string;
5
6
  }): Plugin;
7
+ /*! Fork: esbuild-plugin-svgr | https://github.com/kazijawad/esbuild-plugin-svgr */
8
+ export declare function svgrPlugin(options: SvgrOptions): Plugin;
9
+ /*! Fork: esbuild-plugin-resolve | https://github.com/hannoeru/esbuild-plugin-raw */
10
+ export declare function rawPlugin(): Plugin;
package/dist/esbuild.js CHANGED
@@ -1,4 +1,22 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
1
17
  import React from "react";
18
+ import fs from "fs-extra";
19
+ import path from "path";
2
20
  /*! Fork: esbuild-plugin-resolve | https://github.com/markwylde/esbuild-plugin-resolve */
3
21
  function resolvePlugin(options) {
4
22
  return {
@@ -33,6 +51,45 @@ function resolvePluginIntercept(build, moduleName, moduleTarget) {
33
51
  return { contents: importerCode, resolveDir: args.pluginData.resolveDir };
34
52
  });
35
53
  }
54
+ /*! Fork: esbuild-plugin-svgr | https://github.com/kazijawad/esbuild-plugin-svgr */
55
+ function svgrPlugin(options) {
56
+ return {
57
+ name: "esbuild-svgr",
58
+ setup(build) {
59
+ build.onLoad({ filter: /\.svg$/ }, async (args) => {
60
+ const { transform: transformSvgr } = await import("@svgr/core");
61
+ const svg = await fs.promises.readFile(args.path, "utf8");
62
+ const contents = await transformSvgr(svg, __spreadValues({}, options), { filePath: args.path });
63
+ return {
64
+ contents,
65
+ loader: options.typescript ? "tsx" : "jsx"
66
+ };
67
+ });
68
+ }
69
+ };
70
+ }
71
+ /*! Fork: esbuild-plugin-resolve | https://github.com/hannoeru/esbuild-plugin-raw */
72
+ function rawPlugin() {
73
+ return {
74
+ name: "esbuild-raw",
75
+ setup(build) {
76
+ build.onResolve({ filter: /\?raw$/ }, (args) => {
77
+ return {
78
+ path: path.isAbsolute(args.path) ? args.path : path.join(args.resolveDir, args.path),
79
+ namespace: "raw-loader"
80
+ };
81
+ });
82
+ build.onLoad({ filter: /\?raw$/, namespace: "raw-loader" }, async (args) => {
83
+ return {
84
+ contents: await fs.promises.readFile(args.path.replace(/\?raw$/, "")),
85
+ loader: "text"
86
+ };
87
+ });
88
+ }
89
+ };
90
+ }
36
91
  export {
37
- resolvePlugin
92
+ rawPlugin,
93
+ resolvePlugin,
94
+ svgrPlugin
38
95
  };
package/dist/generate.js CHANGED
@@ -35,7 +35,8 @@ async function generateTempRoot(config, mdxConfig) {
35
35
  await buildTempPages([srcRootFilePaths[0]], {
36
36
  outBase: config.rootSrcDir,
37
37
  outDir: systemConfig.temp.root.outDir,
38
- mdxConfig
38
+ mdxConfig,
39
+ svgrOptions: config.assets.svgr.svgrOptions
39
40
  });
40
41
  }
41
42
  }
@@ -44,7 +45,8 @@ async function generateTempPages(config, mdxConfig) {
44
45
  await buildTempPages(srcPageFilePaths, {
45
46
  outBase: config.pagesSrcDir,
46
47
  outDir: systemConfig.temp.pages.outDir,
47
- mdxConfig
48
+ mdxConfig,
49
+ svgrOptions: config.assets.svgr.svgrOptions
48
50
  });
49
51
  }
50
52
  async function generateAssets(config, viteConfig) {
package/dist/types.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ExoticComponent } from "react";
2
2
  import type { UserConfig as ViteUserConfig } from "vite";
3
+ import type { Config as SvgrOptions } from "@svgr/core";
3
4
  import type { Options as HighlightOptions } from "rehype-highlight";
4
5
  import type { Options as MdxOptions } from "@mdx-js/esbuild";
5
6
  import type { HTMLBeautifyOptions, CSSBeautifyOptions, JSBeautifyOptions } from "js-beautify";
@@ -33,6 +34,9 @@ export declare type MinistaConfig = {
33
34
  outDir: string;
34
35
  outName: string;
35
36
  };
37
+ svgr: {
38
+ svgrOptions: SvgrOptions;
39
+ };
36
40
  icons: {
37
41
  useSprite: boolean;
38
42
  srcDir: string;
@@ -91,6 +95,9 @@ export declare type MinistaUserConfig = {
91
95
  outDir?: string;
92
96
  outName?: string;
93
97
  };
98
+ svgr?: {
99
+ svgrOptions?: SvgrOptions;
100
+ };
94
101
  icons?: {
95
102
  useSprite?: boolean;
96
103
  srcDir?: string;
package/dist/vite.d.ts CHANGED
@@ -1,7 +1,10 @@
1
1
  import type { UserConfig as ViteConfig, Plugin } from "vite";
2
+ import type { Config as SvgrOptions } from "@svgr/core";
2
3
  import type { Options as MdxOptions } from "@mdx-js/esbuild";
3
4
  import type { MinistaResolveConfig, MinistaSvgstoreOptions } from "./types.js";
4
5
  export declare function getViteConfig(config: MinistaResolveConfig, mdxConfig: MdxOptions): Promise<ViteConfig>;
5
6
  export declare function resolveEntry(entry: string | string[] | {}): {};
6
7
  export declare function vitePluginMinistaVirtualHtml(): Plugin;
8
+ /*! Fork: vite-plugin-svgr | https://github.com/pd4d10/vite-plugin-svgr */
9
+ export declare function vitePluginMinistaSvgr(svgrOptions: SvgrOptions): Plugin;
7
10
  export declare function vitePluginMinistaSvgSpriteIcons(srcDir: string, options: MinistaSvgstoreOptions | undefined, output: string, tempOutput: string): Plugin;
package/dist/vite.js CHANGED
@@ -7,7 +7,8 @@ import {
7
7
  defineConfig as defineViteConfig,
8
8
  searchForWorkspaceRoot,
9
9
  createLogger,
10
- mergeConfig as mergeViteConfig
10
+ mergeConfig as mergeViteConfig,
11
+ transformWithEsbuild
11
12
  } from "vite";
12
13
  import react from "@vitejs/plugin-react";
13
14
  import mdx from "@mdx-js/rollup";
@@ -90,6 +91,8 @@ async function getViteConfig(config, mdxConfig) {
90
91
  customLogger: createLogger("info", { prefix: "[minista]" })
91
92
  });
92
93
  const mergedViteConfig = mergeViteConfig(viteConfig, config.vite);
94
+ const svgrPlugin = vitePluginMinistaSvgr(config.assets.svgr.svgrOptions);
95
+ mergedViteConfig.plugins.push(svgrPlugin);
93
96
  if (config.assets.icons.useSprite) {
94
97
  const iconsPlugin = vitePluginMinistaSvgSpriteIcons(config.vitePluginSvgSpriteIconsSrcDir, config.assets.icons.svgstoreOptions, config.out + config.vitePluginSvgSpriteIconsOutput, config.vitePluginSvgSpriteIconsTempOutput);
95
98
  const iconsResolveAlias = {
@@ -166,6 +169,29 @@ function vitePluginMinistaVirtualHtml() {
166
169
  }
167
170
  };
168
171
  }
172
+ /*! Fork: vite-plugin-svgr | https://github.com/pd4d10/vite-plugin-svgr */
173
+ function vitePluginMinistaSvgr(svgrOptions) {
174
+ return {
175
+ name: "vite-plugin-minista-svgr",
176
+ async transform(code, id) {
177
+ if (id.endsWith(".svg")) {
178
+ const { transform: transformSvgr } = await import("@svgr/core");
179
+ const svgCode = await fs.promises.readFile(id, "utf8");
180
+ const componentCode = await transformSvgr(svgCode, svgrOptions, {
181
+ componentName: "ReactComponent",
182
+ filePath: id
183
+ });
184
+ const res = await transformWithEsbuild(componentCode, id, {
185
+ loader: "jsx"
186
+ });
187
+ return {
188
+ code: res.code,
189
+ map: null
190
+ };
191
+ }
192
+ }
193
+ };
194
+ }
169
195
  function vitePluginMinistaSvgSpriteIcons(srcDir, options = {}, output, tempOutput) {
170
196
  async function getSvgSpriteFile(spriteOutput) {
171
197
  const svgFiles = await getFilePaths(srcDir, "svg");
@@ -223,5 +249,6 @@ export {
223
249
  getViteConfig,
224
250
  resolveEntry,
225
251
  vitePluginMinistaSvgSpriteIcons,
252
+ vitePluginMinistaSvgr,
226
253
  vitePluginMinistaVirtualHtml
227
254
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "minista",
3
3
  "description": "Next.js Like Development with 100% Static Generate",
4
- "version": "2.0.0",
4
+ "version": "2.2.0",
5
5
  "bin": {
6
6
  "minista": "./bin/minista.js"
7
7
  },
@@ -10,7 +10,8 @@
10
10
  "type": "module",
11
11
  "files": [
12
12
  "dist",
13
- "lib"
13
+ "lib",
14
+ "client.d.ts"
14
15
  ],
15
16
  "license": "MIT",
16
17
  "homepage": "https://github.com/qrac/minista",
@@ -71,6 +72,7 @@
71
72
  "@mdx-js/esbuild": "^2.1.1",
72
73
  "@mdx-js/react": "^2.1.1",
73
74
  "@mdx-js/rollup": "^2.1.1",
75
+ "@svgr/core": "^6.2.1",
74
76
  "@vitejs/plugin-react": "^1.3.0",
75
77
  "cac": "^6.7.12",
76
78
  "deepmerge-ts": "^4.0.2",