@stati/core 1.6.0 → 1.6.2
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 +91 -39
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/core/preview.d.ts +5 -0
- package/dist/core/preview.d.ts.map +1 -1
- package/dist/core/preview.js +2 -2
- package/dist/core/utils/version.d.ts.map +1 -1
- package/dist/core/utils/version.js +7 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,20 +13,28 @@ npm install @stati/core
|
|
|
13
13
|
### Basic Setup
|
|
14
14
|
|
|
15
15
|
```typescript
|
|
16
|
-
import { build, createDevServer, defineConfig } from '@stati/core';
|
|
16
|
+
import { build, createDevServer, defineConfig, loadConfig } from '@stati/core';
|
|
17
17
|
|
|
18
18
|
// Define configuration
|
|
19
19
|
const config = defineConfig({
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
srcDir: './site',
|
|
21
|
+
outDir: './dist',
|
|
22
|
+
staticDir: './public',
|
|
23
|
+
site: {
|
|
24
|
+
title: 'My Site',
|
|
25
|
+
baseUrl: 'https://example.com',
|
|
26
|
+
},
|
|
23
27
|
});
|
|
24
28
|
|
|
25
|
-
//
|
|
26
|
-
await build(
|
|
29
|
+
// Load configuration and build site
|
|
30
|
+
await build({
|
|
31
|
+
clean: false,
|
|
32
|
+
force: false,
|
|
33
|
+
includeDrafts: false,
|
|
34
|
+
});
|
|
27
35
|
|
|
28
36
|
// Or start development server
|
|
29
|
-
const server = await createDevServer(
|
|
37
|
+
const server = await createDevServer({
|
|
30
38
|
port: 3000,
|
|
31
39
|
open: true,
|
|
32
40
|
});
|
|
@@ -35,41 +43,67 @@ const server = await createDevServer(config, {
|
|
|
35
43
|
### Configuration
|
|
36
44
|
|
|
37
45
|
```typescript
|
|
38
|
-
import { defineConfig } from '@stati/core
|
|
46
|
+
import { defineConfig } from '@stati/core';
|
|
39
47
|
|
|
40
48
|
export default defineConfig({
|
|
41
|
-
//
|
|
42
|
-
|
|
49
|
+
// Source directory for content files
|
|
50
|
+
srcDir: './site',
|
|
43
51
|
|
|
44
52
|
// Output directory for built site
|
|
45
|
-
|
|
53
|
+
outDir: './dist',
|
|
46
54
|
|
|
47
55
|
// Static assets directory
|
|
48
|
-
|
|
56
|
+
staticDir: './public',
|
|
49
57
|
|
|
50
58
|
// Site metadata
|
|
51
|
-
|
|
59
|
+
site: {
|
|
52
60
|
title: 'My Site',
|
|
53
|
-
|
|
54
|
-
url: 'https://example.com',
|
|
61
|
+
baseUrl: 'https://example.com',
|
|
55
62
|
},
|
|
56
63
|
|
|
57
64
|
// Markdown configuration
|
|
58
65
|
markdown: {
|
|
59
|
-
plugins: ['
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
66
|
+
plugins: ['anchor'],
|
|
67
|
+
configure: (md) => {
|
|
68
|
+
md.set({
|
|
69
|
+
html: true,
|
|
70
|
+
linkify: true,
|
|
71
|
+
typographer: true,
|
|
72
|
+
});
|
|
64
73
|
},
|
|
65
74
|
},
|
|
66
75
|
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
// Eta template configuration
|
|
77
|
+
eta: {
|
|
78
|
+
filters: {
|
|
79
|
+
// Custom template filters
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
// Incremental Static Generation
|
|
84
|
+
isg: {
|
|
85
|
+
enabled: true,
|
|
86
|
+
ttlSeconds: 3600,
|
|
87
|
+
maxAgeCapDays: 30,
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
// Development server options
|
|
91
|
+
dev: {
|
|
92
|
+
port: 3000,
|
|
93
|
+
host: 'localhost',
|
|
94
|
+
open: false,
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
// Build lifecycle hooks
|
|
98
|
+
hooks: {
|
|
99
|
+
beforeAll: async (ctx) => {
|
|
100
|
+
console.log(`Building ${ctx.pages.length} pages`);
|
|
101
|
+
},
|
|
102
|
+
beforeRender: async (ctx) => {
|
|
103
|
+
// Custom pre-render logic
|
|
104
|
+
},
|
|
105
|
+
afterRender: async (ctx) => {
|
|
106
|
+
// Custom post-render logic
|
|
73
107
|
},
|
|
74
108
|
},
|
|
75
109
|
});
|
|
@@ -79,7 +113,7 @@ export default defineConfig({
|
|
|
79
113
|
|
|
80
114
|
### Core Functions
|
|
81
115
|
|
|
82
|
-
#### `build(options: BuildOptions): Promise<
|
|
116
|
+
#### `build(options: BuildOptions): Promise<BuildStats>`
|
|
83
117
|
|
|
84
118
|
Build a static site.
|
|
85
119
|
|
|
@@ -87,23 +121,25 @@ Build a static site.
|
|
|
87
121
|
import { build } from '@stati/core';
|
|
88
122
|
|
|
89
123
|
await build({
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
124
|
+
force: false, // Force rebuild of all pages
|
|
125
|
+
clean: false, // Clean output directory before build
|
|
126
|
+
includeDrafts: false, // Include draft pages in build
|
|
127
|
+
configPath: './stati.config.js', // Custom config file path
|
|
94
128
|
});
|
|
95
129
|
```
|
|
96
130
|
|
|
97
|
-
#### `createDevServer(
|
|
131
|
+
#### `createDevServer(options: DevServerOptions): Promise<DevServer>`
|
|
98
132
|
|
|
99
133
|
Create a development server with live reload.
|
|
100
134
|
|
|
101
135
|
```typescript
|
|
102
136
|
import { createDevServer } from '@stati/core';
|
|
103
137
|
|
|
104
|
-
const server = await createDevServer(
|
|
138
|
+
const server = await createDevServer({
|
|
105
139
|
port: 3000,
|
|
140
|
+
host: 'localhost',
|
|
106
141
|
open: true,
|
|
142
|
+
configPath: './stati.config.js',
|
|
107
143
|
});
|
|
108
144
|
```
|
|
109
145
|
|
|
@@ -140,13 +176,24 @@ await invalidate();
|
|
|
140
176
|
Define a type-safe configuration with full TypeScript support.
|
|
141
177
|
|
|
142
178
|
```typescript
|
|
143
|
-
import { defineConfig } from '@stati/core
|
|
179
|
+
import { defineConfig } from '@stati/core';
|
|
144
180
|
|
|
145
181
|
export default defineConfig({
|
|
146
182
|
// Your configuration here
|
|
147
183
|
});
|
|
148
184
|
```
|
|
149
185
|
|
|
186
|
+
#### `loadConfig(cwd?: string): Promise<StatiConfig>`
|
|
187
|
+
|
|
188
|
+
Load and validate Stati configuration from the project directory.
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import { loadConfig } from '@stati/core';
|
|
192
|
+
|
|
193
|
+
const config = await loadConfig(); // Load from current directory
|
|
194
|
+
const config2 = await loadConfig('/path/to/project'); // Load from specific directory
|
|
195
|
+
```
|
|
196
|
+
|
|
150
197
|
## Types
|
|
151
198
|
|
|
152
199
|
The package exports comprehensive TypeScript types:
|
|
@@ -156,11 +203,16 @@ import type {
|
|
|
156
203
|
StatiConfig,
|
|
157
204
|
BuildOptions,
|
|
158
205
|
DevServerOptions,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
206
|
+
InvalidationResult,
|
|
207
|
+
PageModel,
|
|
208
|
+
FrontMatter,
|
|
209
|
+
BuildContext,
|
|
210
|
+
PageContext,
|
|
211
|
+
BuildHooks,
|
|
212
|
+
NavNode,
|
|
213
|
+
ISGConfig,
|
|
214
|
+
AgingRule,
|
|
215
|
+
BuildStats,
|
|
164
216
|
} from '@stati/core/types';
|
|
165
217
|
```
|
|
166
218
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export declare const CONFIG_FILE_BASE = "stati.config";
|
|
|
22
22
|
export declare const CONFIG_FILE_PATTERNS: string[];
|
|
23
23
|
/** Default development server port */
|
|
24
24
|
export declare const DEFAULT_DEV_PORT = 3000;
|
|
25
|
+
/** Default preview server port */
|
|
26
|
+
export declare const DEFAULT_PREVIEW_PORT = 4000;
|
|
25
27
|
/** Default development server host */
|
|
26
28
|
export declare const DEFAULT_DEV_HOST = "localhost";
|
|
27
29
|
/** Default development server base URL */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,iDAAiD;AACjD,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,+CAA+C;AAC/C,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,sCAAsC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,iCAAiC;AACjC,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,kCAAkC;AAClC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAIjD,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,iCAAkC,CAAC;AAEtE,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAIF,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,0BAAmD,CAAC;AAIrF,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAI9C,4BAA4B;AAC5B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAA0B,CAAC;AAExD,yBAAyB;AACzB,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAAsB,CAAC;AAEpD,8BAA8B;AAC9B,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAI3D,oDAAoD;AACpD,eAAO,MAAM,aAAa,QAAyB,CAAC;AAEpD,iDAAiD;AACjD,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAE3C,iDAAiD;AACjD,eAAO,MAAM,WAAW,QAAuB,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,WAAW,QAAsB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,SAAS,QAAkB,CAAC;AAEzC,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAI3C,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,eAAgC,CAAC;AAE7D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,8CAA8C;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,iDAAiD;AACjD,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,+CAA+C;AAC/C,eAAO,MAAM,eAAe,SAAS,CAAC;AAEtC,sCAAsC;AACtC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,iCAAiC;AACjC,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC,4DAA4D;AAC5D,eAAO,MAAM,YAAY,UAAU,CAAC;AAEpC,kCAAkC;AAClC,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAIjD,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,iCAAkC,CAAC;AAEtE,mCAAmC;AACnC,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAIF,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,0BAAmD,CAAC;AAIrF,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAI9C,4BAA4B;AAC5B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAA0B,CAAC;AAExD,yBAAyB;AACzB,eAAO,MAAM,eAAe,QAAwB,CAAC;AAErD,0BAA0B;AAC1B,eAAO,MAAM,gBAAgB,QAAsB,CAAC;AAEpD,8BAA8B;AAC9B,eAAO,MAAM,oBAAoB,QAAyB,CAAC;AAI3D,oDAAoD;AACpD,eAAO,MAAM,aAAa,QAAyB,CAAC;AAEpD,iDAAiD;AACjD,eAAO,MAAM,cAAc,QAA0B,CAAC;AAEtD,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAE3C,iDAAiD;AACjD,eAAO,MAAM,WAAW,QAAuB,CAAC;AAEhD,uCAAuC;AACvC,eAAO,MAAM,WAAW,QAAsB,CAAC;AAE/C,2CAA2C;AAC3C,eAAO,MAAM,SAAS,QAAkB,CAAC;AAEzC,6CAA6C;AAC7C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAI3C,kCAAkC;AAClC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,8BAA8B;AAC9B,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAExC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,eAAgC,CAAC;AAE7D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAIvC,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,8CAA8C;AAC9C,eAAO,MAAM,cAAc,UAAU,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -25,6 +25,8 @@ export const CONFIG_FILE_PATTERNS = CONFIG_FILE_EXTENSIONS.map((ext) => `${CONFI
|
|
|
25
25
|
// === Development Server Constants ===
|
|
26
26
|
/** Default development server port */
|
|
27
27
|
export const DEFAULT_DEV_PORT = 3000;
|
|
28
|
+
/** Default preview server port */
|
|
29
|
+
export const DEFAULT_PREVIEW_PORT = 4000;
|
|
28
30
|
/** Default development server host */
|
|
29
31
|
export const DEFAULT_DEV_HOST = 'localhost';
|
|
30
32
|
/** Default development server base URL */
|
package/dist/core/preview.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { Logger } from '../types/index.js';
|
|
2
2
|
export interface PreviewServerOptions {
|
|
3
|
+
/** Port for preview server (default: 4000) */
|
|
3
4
|
port?: number;
|
|
5
|
+
/** Host for preview server (default: 'localhost') */
|
|
4
6
|
host?: string;
|
|
7
|
+
/** Whether to open browser automatically (default: false) */
|
|
5
8
|
open?: boolean;
|
|
9
|
+
/** Path to config file */
|
|
6
10
|
configPath?: string;
|
|
11
|
+
/** Logger instance */
|
|
7
12
|
logger?: Logger;
|
|
8
13
|
}
|
|
9
14
|
export interface PreviewServer {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/core/preview.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAyBD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA2JxB"}
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/core/preview.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAMhD,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAyBD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,aAAa,CAAC,CA2JxB"}
|
package/dist/core/preview.js
CHANGED
|
@@ -4,7 +4,7 @@ import { readFile } from 'fs/promises';
|
|
|
4
4
|
import { loadConfig } from '../config/loader.js';
|
|
5
5
|
import { resolveDevPaths } from './utils/paths.js';
|
|
6
6
|
import { resolvePrettyUrl } from './utils/server.js';
|
|
7
|
-
import {
|
|
7
|
+
import { DEFAULT_PREVIEW_PORT, DEFAULT_DEV_HOST } from '../constants.js';
|
|
8
8
|
/**
|
|
9
9
|
* Loads and validates configuration for the preview server.
|
|
10
10
|
*/
|
|
@@ -27,7 +27,7 @@ async function loadPreviewConfig(configPath, logger) {
|
|
|
27
27
|
* without live reload functionality, perfect for previewing the production build.
|
|
28
28
|
*/
|
|
29
29
|
export async function createPreviewServer(options = {}) {
|
|
30
|
-
const { port =
|
|
30
|
+
const { port = DEFAULT_PREVIEW_PORT, host = DEFAULT_DEV_HOST, open = false, configPath, logger = {
|
|
31
31
|
info: () => { },
|
|
32
32
|
success: () => { },
|
|
33
33
|
error: (msg) => console.error(msg),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/core/utils/version.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/core/utils/version.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAqBxC"}
|
|
@@ -9,8 +9,14 @@ export function getStatiVersion() {
|
|
|
9
9
|
try {
|
|
10
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
11
|
const __dirname = dirname(__filename);
|
|
12
|
-
const packageJsonPath = join(__dirname, '
|
|
12
|
+
const packageJsonPath = join(__dirname, '../../../package.json');
|
|
13
13
|
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
14
|
+
// Return fallback if version is missing, empty, or not a string
|
|
15
|
+
if (!packageJson.version ||
|
|
16
|
+
typeof packageJson.version !== 'string' ||
|
|
17
|
+
packageJson.version.trim() === '') {
|
|
18
|
+
return '1.0.0';
|
|
19
|
+
}
|
|
14
20
|
return packageJson.version;
|
|
15
21
|
}
|
|
16
22
|
catch {
|