vite-plugin-unit 1.0.0 → 2.0.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.
Files changed (2) hide show
  1. package/dist/index.js +22 -15
  2. package/package.json +58 -73
package/dist/index.js CHANGED
@@ -5,10 +5,10 @@
5
5
  * @license MIT
6
6
  * @url https://github.com/henryhale/vite-plugin-unit
7
7
  */
8
+ import { log } from "node:console";
8
9
  import { existsSync, readFileSync } from "node:fs";
10
+ import { cp, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
9
11
  import { dirname, extname, join, resolve } from "node:path";
10
- import { cp, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
11
- import { log } from "node:console";
12
12
  const defaultOptions = {
13
13
  pages: "pages/",
14
14
  template: "template.html",
@@ -44,9 +44,10 @@ export default function plugin(options = {}) {
44
44
  // create a key-value object from attributes of an html tag
45
45
  function mapAttributes(attr = "") {
46
46
  const map = {};
47
- let match;
48
- while ((match = attrRegex.exec(attr)) !== null) {
47
+ let match = attrRegex.exec(attr);
48
+ while (match !== null) {
49
49
  map[match[1]] = match[2];
50
+ match = attrRegex.exec(attr);
50
51
  }
51
52
  return map;
52
53
  }
@@ -62,16 +63,16 @@ export default function plugin(options = {}) {
62
63
  return "";
63
64
  })
64
65
  // replace every html tag matching an import name
65
- .replace(htmlRegex, (match, tag, attr = "") => {
66
+ .replace(htmlRegex, (match, tag, attr) => {
66
67
  const path = nameToPath.get(tag);
67
68
  if (path) {
68
69
  // get rid of trailing forward slash
69
70
  if (attr.endsWith("/"))
70
71
  attr = attr.slice(0, -1);
71
72
  const map = mapAttributes(attr);
72
- return pathToCode
73
+ return (pathToCode
73
74
  .get(path)
74
- .replace(valueRegex, (m, key) => {
75
+ ?.replace(valueRegex, (m, key) => {
75
76
  const value = map[key];
76
77
  if (value) {
77
78
  delete map[key];
@@ -81,10 +82,10 @@ export default function plugin(options = {}) {
81
82
  })
82
83
  .replace(tagRegex, (m) => {
83
84
  const others = Object.entries(map).reduce((r, [k, v]) => {
84
- return r + k + "=" + (/'/.test(v) ? `"${v}"` : `'${v}'`);
85
+ return `${r + k}=${/'/.test(v) ? `"${v}"` : `'${v}'`}`;
85
86
  }, "");
86
- return m.slice(0, -1) + " " + others + ">";
87
- });
87
+ return `${m.slice(0, -1)} ${others}>`;
88
+ }) ?? "");
88
89
  }
89
90
  return match;
90
91
  })
@@ -122,7 +123,9 @@ export default function plugin(options = {}) {
122
123
  async function respond(file) {
123
124
  res.statusCode = 200;
124
125
  res.setHeader("Content-Type", "text/html");
125
- const contents = await readFile(join(config.root, opt.template), { encoding: "utf-8" });
126
+ const contents = await readFile(join(config.root, opt.template), {
127
+ encoding: "utf-8"
128
+ });
126
129
  pathToCode.clear();
127
130
  const compiled = compile(file, await readFile(file, { encoding: "utf-8" }));
128
131
  res.end(contents.replace(opt.slot, compiled));
@@ -143,7 +146,7 @@ export default function plugin(options = {}) {
143
146
  }
144
147
  // try checking if the requested asset exists in the `src` folder
145
148
  if (filePath.lastIndexOf(".") > -1) {
146
- filePath = join(config.root, req.url);
149
+ filePath = join(config.root, req.url || "");
147
150
  if (existsSync(filePath)) {
148
151
  // direct the file path relative to the `src` folder
149
152
  req.url = filePath;
@@ -191,7 +194,9 @@ export default function plugin(options = {}) {
191
194
  * Grab the template file
192
195
  */
193
196
  const templateFile = join(outputDir, opt.template);
194
- const template = await readFile(templateFile, { encoding: "utf-8" });
197
+ const template = await readFile(templateFile, {
198
+ encoding: "utf-8"
199
+ });
195
200
  /**
196
201
  * Capture the pages
197
202
  */
@@ -210,7 +215,9 @@ export default function plugin(options = {}) {
210
215
  else {
211
216
  // ...
212
217
  }
213
- const fileContent = await readFile(filePath, { encoding: "utf-8" });
218
+ const fileContent = await readFile(filePath, {
219
+ encoding: "utf-8"
220
+ });
214
221
  const compiledPage = compile(filePath, fileContent);
215
222
  const result = template.replace(opt.slot, compiledPage);
216
223
  log("build: ", page);
@@ -249,7 +256,7 @@ export default function plugin(options = {}) {
249
256
  /**
250
257
  * Copy the entire unit dist folder to the root of the project
251
258
  */
252
- await cp(outputDir + "dist", distFolder, { recursive: true });
259
+ await cp(`${outputDir}dist`, distFolder, { recursive: true });
253
260
  // await new Promise((res) => setTimeout(res, 5000));
254
261
  /**
255
262
  * Delete the entire unit output folder
package/package.json CHANGED
@@ -1,75 +1,60 @@
1
1
  {
2
- "name": "vite-plugin-unit",
3
- "version": "1.0.0",
4
- "description": "A vite plugin to enable you build websites in units.",
5
- "main": "./dist/index.js",
6
- "module": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "files": [
9
- "./dist/",
10
- "./LICENSE.md",
11
- "./README.md",
12
- "./package.json"
13
- ],
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/henryhale/vite-plugin-unit.git"
17
- },
18
- "keywords": [
19
- "vite",
20
- "static",
21
- "site",
22
- "static site generator",
23
- "ui",
24
- "website",
25
- "browser"
26
- ],
27
- "author": {
28
- "name": "Henry Hale",
29
- "url": "https://github.com/henryhale"
30
- },
31
- "license": "MIT",
32
- "bugs": {
33
- "url": "https://github.com/henryhale/vite-plugin-unit/issues"
34
- },
35
- "homepage": "https://github.com/henryhale/vite-plugin-unit#readme",
36
- "type": "module",
37
- "scripts": {
38
- "build": "tsc -b",
39
- "dev": "tsc -w",
40
- "lint": "eslint --cache --ext .ts source/ && prettier -c source/",
41
- "lint:fix": "eslint --cache --ext .ts source/ --fix && prettier -c -w source/",
42
- "prepack": "pnpm build",
43
- "prepare": "husky install",
44
- "release": "release-it",
45
- "test": "echo \"Error: no test specified\""
46
- },
47
- "engines": {
48
- "node": ">=18",
49
- "pnpm": ">=8"
50
- },
51
- "lint-staged": {
52
- "*.ts": "pnpm lint:fix"
53
- },
54
- "prettier": {
55
- "printWidth": 120,
56
- "tabWidth": 4,
57
- "semi": true,
58
- "singleQuote": false,
59
- "trailingComma": "none"
60
- },
61
- "devDependencies": {
62
- "@release-it/conventional-changelog": "^8.0.1",
63
- "@types/node": "^20.12.2",
64
- "@typescript-eslint/eslint-plugin": "^6.21.0",
65
- "@typescript-eslint/parser": "^6.21.0",
66
- "eslint": "^8.57.0",
67
- "eslint-plugin-prettier": "^5.1.3",
68
- "husky": "^8.0.3",
69
- "lint-staged": "^15.2.2",
70
- "prettier": "^3.2.5",
71
- "release-it": "^17.1.1",
72
- "typescript": "^5.4.3",
73
- "vite": "^5.2.7"
74
- }
2
+ "name": "vite-plugin-unit",
3
+ "version": "2.0.0",
4
+ "description": "A vite plugin to enable you build websites in units.",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "./dist/",
10
+ "./LICENSE.md",
11
+ "./README.md",
12
+ "./package.json"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/henryhale/vite-plugin-unit.git"
17
+ },
18
+ "keywords": [
19
+ "vite",
20
+ "static",
21
+ "site",
22
+ "static site generator",
23
+ "ui",
24
+ "website",
25
+ "browser"
26
+ ],
27
+ "author": {
28
+ "name": "Henry Hale",
29
+ "url": "https://github.com/henryhale"
30
+ },
31
+ "license": "MIT",
32
+ "bugs": {
33
+ "url": "https://github.com/henryhale/vite-plugin-unit/issues"
34
+ },
35
+ "homepage": "https://github.com/henryhale/vite-plugin-unit#readme",
36
+ "type": "module",
37
+ "scripts": {
38
+ "build": "tsc -b",
39
+ "dev": "tsc -w",
40
+ "lint": "biome check",
41
+ "lint:fix": "biome check --fix",
42
+ "prepack": "pnpm build",
43
+ "prepare": "husky || true",
44
+ "release": "release-it",
45
+ "test": "echo \"Error: no test specified\""
46
+ },
47
+ "lint-staged": {
48
+ "*.ts": "pnpm lint:fix"
49
+ },
50
+ "devDependencies": {
51
+ "@biomejs/biome": "^2.4.10",
52
+ "@release-it/conventional-changelog": "^10.0.6",
53
+ "@types/node": "^25.5.2",
54
+ "husky": "^9.1.7",
55
+ "lint-staged": "^16.4.0",
56
+ "release-it": "^19.2.4",
57
+ "typescript": "^6.0.2",
58
+ "vite": "^8.0.3"
59
+ }
75
60
  }