@modern-js/plugin-ssg 1.0.0 → 1.1.2-rc.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 (56) hide show
  1. package/.eslintrc.js +6 -0
  2. package/CHANGELOG.md +42 -0
  3. package/README.md +1 -4
  4. package/dist/js/modern/index.js +97 -58
  5. package/dist/js/modern/libs/make.js +37 -0
  6. package/dist/js/modern/libs/output.js +2 -1
  7. package/dist/js/modern/libs/replace.js +5 -4
  8. package/dist/js/modern/libs/util.js +39 -22
  9. package/dist/js/modern/server/index.js +4 -3
  10. package/dist/js/modern/server/prerender.js +2 -2
  11. package/dist/js/modern/server/process.js +8 -7
  12. package/dist/js/node/index.js +97 -56
  13. package/dist/js/node/libs/make.js +50 -0
  14. package/dist/js/node/libs/output.js +7 -3
  15. package/dist/js/node/libs/replace.js +5 -4
  16. package/dist/js/node/libs/util.js +43 -30
  17. package/dist/js/node/server/index.js +5 -3
  18. package/dist/js/node/server/prerender.js +2 -2
  19. package/dist/js/node/server/process.js +7 -6
  20. package/dist/types/libs/make.d.ts +5 -0
  21. package/dist/types/libs/replace.d.ts +1 -1
  22. package/dist/types/libs/util.d.ts +4 -8
  23. package/dist/types/types.d.ts +13 -17
  24. package/package.json +10 -11
  25. package/src/index.ts +85 -89
  26. package/src/libs/make.ts +45 -0
  27. package/src/libs/output.ts +3 -2
  28. package/src/libs/replace.ts +7 -4
  29. package/src/libs/util.ts +40 -27
  30. package/src/server/index.ts +3 -2
  31. package/src/server/process.ts +7 -5
  32. package/src/types.ts +26 -20
  33. package/tests/.eslintrc.js +6 -0
  34. package/tests/lib.test.ts +49 -170
  35. package/tests/util.test.ts +71 -32
  36. package/dist/js/modern/libs/createPage.js +0 -46
  37. package/dist/js/modern/libs/invoker.js +0 -55
  38. package/dist/js/modern/libs/render.js +0 -15
  39. package/dist/js/modern/loader/index.js +0 -105
  40. package/dist/js/modern/manifest-op.js +0 -100
  41. package/dist/js/node/libs/createPage.js +0 -57
  42. package/dist/js/node/libs/invoker.js +0 -66
  43. package/dist/js/node/libs/render.js +0 -22
  44. package/dist/js/node/loader/index.js +0 -115
  45. package/dist/js/node/manifest-op.js +0 -120
  46. package/dist/types/libs/createPage.d.ts +0 -2
  47. package/dist/types/libs/invoker.d.ts +0 -5
  48. package/dist/types/libs/render.d.ts +0 -3
  49. package/dist/types/loader/index.d.ts +0 -4
  50. package/dist/types/manifest-op.d.ts +0 -18
  51. package/src/libs/createPage.ts +0 -42
  52. package/src/libs/invoker.ts +0 -55
  53. package/src/libs/render.ts +0 -16
  54. package/src/loader/index.ts +0 -99
  55. package/src/manifest-op.ts +0 -110
  56. package/tests/operate.test.ts +0 -39
@@ -1,110 +0,0 @@
1
- import { path, fs } from '@modern-js/utils';
2
-
3
- type ManifestContent = Record<string, string[]>;
4
-
5
- const CACHE_DIRECTORY = './node_modules/.cache';
6
-
7
- const cacheDir = path.join(process.cwd(), CACHE_DIRECTORY);
8
- const manifest = path.join(cacheDir, 'loaderManifest.json');
9
- fs.mkdirp(cacheDir);
10
-
11
- export const MODE: Record<string, number> = {
12
- STRICT: 1,
13
- LOOSE: 2,
14
- MIXIN: 3,
15
- };
16
-
17
- export function toKey(level: number): string {
18
- return `file_${level}`;
19
- }
20
- export class LoaderManifest {
21
- content: ManifestContent;
22
-
23
- constructor() {
24
- this.content = {};
25
- this.load();
26
- }
27
-
28
- public get(root: string, targetLevel: number): string[] {
29
- return Object.values(MODE).reduce((total: string[], level: number) => {
30
- if (level > targetLevel) {
31
- return total;
32
- }
33
-
34
- const key = toKey(level);
35
- const allow = this.content[key].filter((file: string) =>
36
- file.includes(root),
37
- );
38
- return total.concat(allow);
39
- }, []);
40
- }
41
-
42
- public add(filename: string, level: number) {
43
- const key = toKey(level);
44
- this.load();
45
- if (this.includes(filename, key)) {
46
- return;
47
- }
48
-
49
- this.cleanExist(filename);
50
- this.content[key].push(filename);
51
- this.dump();
52
- }
53
-
54
- private initContent() {
55
- return Object.values(MODE).reduce(
56
- (total: ManifestContent, level: number) => {
57
- const key = toKey(level);
58
- total[key] = [];
59
- return total;
60
- },
61
- {},
62
- );
63
- }
64
-
65
- private dump() {
66
- fs.writeFileSync(manifest, JSON.stringify(this.content, null, 4));
67
- }
68
-
69
- private load() {
70
- const exist = fs.existsSync(manifest);
71
- if (exist) {
72
- try {
73
- const contentStr = fs.readFileSync(manifest, 'utf-8');
74
- this.content = JSON.parse(contentStr);
75
- } catch (e) {
76
- throw new Error(`解析 loader mainfest 失败:${manifest}`);
77
- }
78
- } else {
79
- this.content = this.initContent();
80
- }
81
- }
82
-
83
- private includes(filename: string, key: string) {
84
- return this.content[key].includes(filename);
85
- }
86
-
87
- private index(filename: string, key: string) {
88
- return this.content[key].indexOf(filename);
89
- }
90
-
91
- private del(index: number, key: string) {
92
- this.content[key].splice(index, 1);
93
- }
94
-
95
- private cleanExist(filename: string) {
96
- Object.values(MODE).some((level: number) => {
97
- const key = toKey(level);
98
-
99
- if (this.includes(filename, key)) {
100
- const index = this.index(filename, key);
101
- this.del(index, key);
102
- return true;
103
- }
104
-
105
- return false;
106
- });
107
- }
108
- }
109
-
110
- export { manifest };
@@ -1,39 +0,0 @@
1
- import { fs } from '@modern-js/utils';
2
- import { LoaderManifest, manifest } from '@/manifest-op';
3
-
4
- describe('test ssg manifest operate', () => {
5
- beforeAll(() => {
6
- if (fs.existsSync(manifest)) {
7
- fs.unlinkSync(manifest);
8
- }
9
- });
10
-
11
- test('should get correctly initial data', () => {
12
- const loaderManifest = new LoaderManifest();
13
- expect(loaderManifest.content).toEqual({
14
- file_1: [],
15
- file_2: [],
16
- file_3: [],
17
- });
18
- });
19
-
20
- test('should add file correctly', () => {
21
- const loaderManifest = new LoaderManifest();
22
- loaderManifest.add('/foo.js', 1);
23
- loaderManifest.add('/bar.js', 2);
24
- loaderManifest.add('/dir/baz.js', 2);
25
- loaderManifest.add('/dir/foo.js', 3);
26
- expect(loaderManifest.content).toEqual({
27
- file_1: ['/foo.js'],
28
- file_2: ['/bar.js', '/dir/baz.js'],
29
- file_3: ['/dir/foo.js'],
30
- });
31
- });
32
-
33
- test('should get file correctly', () => {
34
- const loaderManifest = new LoaderManifest();
35
- expect(loaderManifest.get('/', 1)).toEqual(['/foo.js']);
36
- expect(loaderManifest.get('/dir', 2)).toEqual(['/dir/baz.js']);
37
- expect(loaderManifest.get('/unknow', 3)).toEqual([]);
38
- });
39
- });