mintlify 1.0.8 → 1.1.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 +53 -31
- package/bin/constants.js +5 -1
- package/bin/constants.js.map +1 -1
- package/bin/local-preview/index.js +34 -18
- package/bin/local-preview/index.js.map +1 -1
- package/package.json +2 -1
- package/src/constants.ts +11 -1
- package/src/local-preview/index.ts +49 -22
package/README.md
CHANGED
|
@@ -1,31 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<a href="https://mintlify.com">
|
|
3
|
+
<img
|
|
4
|
+
src="https://res.cloudinary.com/mintlify/image/upload/v1665385627/logo-rounded_zuk7q1.svg"
|
|
5
|
+
alt="Mintlify Logo"
|
|
6
|
+
height="64"
|
|
7
|
+
/>
|
|
8
|
+
</a>
|
|
9
|
+
<br />
|
|
10
|
+
<p>
|
|
11
|
+
<h3>
|
|
12
|
+
<b>
|
|
13
|
+
Mintlify CLI
|
|
14
|
+
</b>
|
|
15
|
+
</h3>
|
|
16
|
+
</p>
|
|
17
|
+
<p>
|
|
18
|
+
The Mintlify CLI is the easiest way to build Mintlify apps from the command line.
|
|
19
|
+
</p>
|
|
20
|
+
<p>
|
|
21
|
+
|
|
22
|
+
[](/) [](https://mintlify.com) [](https://github.com/mintlify/mint/actions) [](https://twitter.com/intent/tweet?url=&text=Check%20out%20%40mintlify) [](https://discord.gg/MPNgtSZkgK) [](https://github.com/mintlify/mint/discussions)
|
|
23
|
+
|
|
24
|
+
</p>
|
|
25
|
+
<p>
|
|
26
|
+
<sub>
|
|
27
|
+
Built with ❤︎ by
|
|
28
|
+
<a href="https://mintlify.com">
|
|
29
|
+
Mintlify
|
|
30
|
+
</a>
|
|
31
|
+
</sub>
|
|
32
|
+
</p>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
### 🚀 Installation
|
|
36
|
+
|
|
37
|
+
Download the Mintlify CLI using the following command
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
npm i mintlify -g
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 👩💻 Development
|
|
44
|
+
|
|
45
|
+
Run the following command at the root of your Mintlify application to preview changes locally.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
mintlify dev
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 🏃 Get Started
|
|
52
|
+
|
|
53
|
+
[Create an account](https://mintlify.com/start) to start using Mintlify for your documentation.
|
package/bin/constants.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import * as url from "url";
|
|
3
|
+
import os from "os";
|
|
3
4
|
// package installation location
|
|
4
5
|
export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
|
|
6
|
+
export const HOME_DIR = os.homedir();
|
|
7
|
+
export const DOT_MINTLIFY = path.join(HOME_DIR, ".mintlify");
|
|
8
|
+
export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
|
|
5
9
|
// command execution location
|
|
6
10
|
export const CMD_EXEC_PATH = process.cwd();
|
|
7
|
-
export const
|
|
11
|
+
export const LAST_INVOCATION_PATH_FILE_LOCATION = path.join(CLIENT_PATH, "last-invocation-path");
|
|
8
12
|
//# sourceMappingURL=constants.js.map
|
package/bin/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAE7D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAErE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE3C,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC,IAAI,CACzD,WAAW,EACX,sBAAsB,CACvB,CAAC"}
|
|
@@ -6,13 +6,26 @@ import { isInternetAvailable } from "is-internet-available";
|
|
|
6
6
|
import path from "path";
|
|
7
7
|
import shell from "shelljs";
|
|
8
8
|
import categorizeFiles from "./categorizeFiles.js";
|
|
9
|
-
import { CMD_EXEC_PATH, CLIENT_PATH,
|
|
9
|
+
import { CMD_EXEC_PATH, CLIENT_PATH, HOME_DIR, DOT_MINTLIFY, LAST_INVOCATION_PATH_FILE_LOCATION, } from "../constants.js";
|
|
10
10
|
import { injectFavicons } from "./injectFavicons.js";
|
|
11
11
|
import listener from "./listener.js";
|
|
12
12
|
import { createPage, createMetadataFileFromPages } from "./metadata.js";
|
|
13
13
|
import { updateConfigFile } from "./mintConfigFile.js";
|
|
14
14
|
import { buildLogger } from "../util.js";
|
|
15
15
|
const { readFile } = _promises;
|
|
16
|
+
const saveInvocationPath = async () => {
|
|
17
|
+
await fse.outputFile(LAST_INVOCATION_PATH_FILE_LOCATION, CMD_EXEC_PATH);
|
|
18
|
+
};
|
|
19
|
+
const cleanOldFiles = async () => {
|
|
20
|
+
const lastInvocationPathExists = await pathExists(LAST_INVOCATION_PATH_FILE_LOCATION);
|
|
21
|
+
if (!lastInvocationPathExists)
|
|
22
|
+
return;
|
|
23
|
+
const lastInvocationPath = (await readFile(LAST_INVOCATION_PATH_FILE_LOCATION)).toString();
|
|
24
|
+
if (lastInvocationPath !== CMD_EXEC_PATH) {
|
|
25
|
+
// clean if invoked in new location
|
|
26
|
+
shellExec("git clean -d -x -e node_modules -e last-invocation-path -f");
|
|
27
|
+
}
|
|
28
|
+
};
|
|
16
29
|
const copyFiles = async (logger) => {
|
|
17
30
|
logger.start("Syncing doc files...");
|
|
18
31
|
shell.cd(CMD_EXEC_PATH);
|
|
@@ -73,22 +86,24 @@ const gitExists = () => {
|
|
|
73
86
|
}
|
|
74
87
|
return doesGitExist;
|
|
75
88
|
};
|
|
89
|
+
const shellExec = (cmd) => {
|
|
90
|
+
return shell.exec(cmd, { silent: true });
|
|
91
|
+
};
|
|
76
92
|
const dev = async () => {
|
|
77
|
-
shell.cd(
|
|
93
|
+
shell.cd(HOME_DIR);
|
|
78
94
|
const logger = buildLogger("Starting a local Mintlify instance...");
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
shell.cd("mint");
|
|
95
|
+
await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
|
|
96
|
+
shell.cd(path.join(HOME_DIR, ".mintlify", "mint"));
|
|
83
97
|
let runYarn = true;
|
|
84
98
|
const gitInstalled = gitExists();
|
|
85
99
|
let firstInstallation = false;
|
|
86
|
-
|
|
100
|
+
const gitRepoInitialized = await pathExists(path.join(DOT_MINTLIFY, "mint", ".git"));
|
|
101
|
+
if (!gitRepoInitialized) {
|
|
87
102
|
firstInstallation = true;
|
|
88
103
|
if (gitInstalled) {
|
|
89
104
|
logger.start("Initializing local Mintlify instance...");
|
|
90
|
-
|
|
91
|
-
|
|
105
|
+
shellExec("git init");
|
|
106
|
+
shellExec("git remote add -f mint-origin https://github.com/mintlify/mint.git");
|
|
92
107
|
}
|
|
93
108
|
else {
|
|
94
109
|
logger.fail("git must be installed (https://github.com/git-guides/install-git)");
|
|
@@ -98,13 +113,11 @@ const dev = async () => {
|
|
|
98
113
|
const internet = await isInternetAvailable();
|
|
99
114
|
let pullOutput = null;
|
|
100
115
|
if (internet && gitInstalled) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
pullOutput =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
shell.exec("git config core.sparseCheckout false", { silent: true });
|
|
107
|
-
shell.exec("rm .git/info/sparse-checkout", { silent: true });
|
|
116
|
+
shellExec("git config core.sparseCheckout true");
|
|
117
|
+
shellExec('echo "client/" >> .git/info/sparse-checkout');
|
|
118
|
+
pullOutput = shellExec("git pull mint-origin main").stdout;
|
|
119
|
+
shellExec("git config core.sparseCheckout false");
|
|
120
|
+
shellExec("rm .git/info/sparse-checkout");
|
|
108
121
|
}
|
|
109
122
|
if (pullOutput === "Already up to date.\n") {
|
|
110
123
|
runYarn = false;
|
|
@@ -115,7 +128,7 @@ const dev = async () => {
|
|
|
115
128
|
logger.succeed("Local Mintlify instance initialized");
|
|
116
129
|
}
|
|
117
130
|
logger.start("Updating dependencies...");
|
|
118
|
-
|
|
131
|
+
shellExec("yarn");
|
|
119
132
|
if (firstInstallation) {
|
|
120
133
|
logger.succeed("Installation complete");
|
|
121
134
|
}
|
|
@@ -123,7 +136,10 @@ const dev = async () => {
|
|
|
123
136
|
logger.succeed("Dependencies updated");
|
|
124
137
|
}
|
|
125
138
|
}
|
|
126
|
-
|
|
139
|
+
if (!firstInstallation) {
|
|
140
|
+
await cleanOldFiles();
|
|
141
|
+
}
|
|
142
|
+
await saveInvocationPath();
|
|
127
143
|
await copyFiles(logger);
|
|
128
144
|
run();
|
|
129
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,eAAe,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-preview/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mintlify",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "The Mintlify CLI",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=14.16"
|
|
7
7
|
},
|
|
8
8
|
"scripts": {
|
|
9
|
+
"prepare": "tsc",
|
|
9
10
|
"build": "tsc",
|
|
10
11
|
"local": "npm uninstall -g mintlify && npm i -g ."
|
|
11
12
|
},
|
package/src/constants.ts
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import * as url from "url";
|
|
3
|
+
import os from "os";
|
|
3
4
|
|
|
4
5
|
// package installation location
|
|
5
6
|
export const INSTALL_PATH = url.fileURLToPath(new URL(".", import.meta.url));
|
|
6
7
|
|
|
8
|
+
export const HOME_DIR = os.homedir();
|
|
9
|
+
|
|
10
|
+
export const DOT_MINTLIFY = path.join(HOME_DIR, ".mintlify");
|
|
11
|
+
|
|
12
|
+
export const CLIENT_PATH = path.join(DOT_MINTLIFY, "mint", "client");
|
|
13
|
+
|
|
7
14
|
// command execution location
|
|
8
15
|
export const CMD_EXEC_PATH = process.cwd();
|
|
9
16
|
|
|
10
|
-
export const
|
|
17
|
+
export const LAST_INVOCATION_PATH_FILE_LOCATION = path.join(
|
|
18
|
+
CLIENT_PATH,
|
|
19
|
+
"last-invocation-path"
|
|
20
|
+
);
|
|
@@ -6,8 +6,13 @@ import { isInternetAvailable } from "is-internet-available";
|
|
|
6
6
|
import path from "path";
|
|
7
7
|
import shell from "shelljs";
|
|
8
8
|
import categorizeFiles from "./categorizeFiles.js";
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
import {
|
|
10
|
+
CMD_EXEC_PATH,
|
|
11
|
+
CLIENT_PATH,
|
|
12
|
+
HOME_DIR,
|
|
13
|
+
DOT_MINTLIFY,
|
|
14
|
+
LAST_INVOCATION_PATH_FILE_LOCATION,
|
|
15
|
+
} from "../constants.js";
|
|
11
16
|
import { injectFavicons } from "./injectFavicons.js";
|
|
12
17
|
import listener from "./listener.js";
|
|
13
18
|
import { createPage, createMetadataFileFromPages } from "./metadata.js";
|
|
@@ -16,6 +21,24 @@ import { buildLogger } from "../util.js";
|
|
|
16
21
|
|
|
17
22
|
const { readFile } = _promises;
|
|
18
23
|
|
|
24
|
+
const saveInvocationPath = async () => {
|
|
25
|
+
await fse.outputFile(LAST_INVOCATION_PATH_FILE_LOCATION, CMD_EXEC_PATH);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const cleanOldFiles = async () => {
|
|
29
|
+
const lastInvocationPathExists = await pathExists(
|
|
30
|
+
LAST_INVOCATION_PATH_FILE_LOCATION
|
|
31
|
+
);
|
|
32
|
+
if (!lastInvocationPathExists) return;
|
|
33
|
+
const lastInvocationPath = (
|
|
34
|
+
await readFile(LAST_INVOCATION_PATH_FILE_LOCATION)
|
|
35
|
+
).toString();
|
|
36
|
+
if (lastInvocationPath !== CMD_EXEC_PATH) {
|
|
37
|
+
// clean if invoked in new location
|
|
38
|
+
shellExec("git clean -d -x -e node_modules -e last-invocation-path -f");
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
19
42
|
const copyFiles = async (logger: any) => {
|
|
20
43
|
logger.start("Syncing doc files...");
|
|
21
44
|
shell.cd(CMD_EXEC_PATH);
|
|
@@ -88,24 +111,28 @@ const gitExists = () => {
|
|
|
88
111
|
return doesGitExist;
|
|
89
112
|
};
|
|
90
113
|
|
|
114
|
+
const shellExec = (cmd: string) => {
|
|
115
|
+
return shell.exec(cmd, { silent: true });
|
|
116
|
+
};
|
|
117
|
+
|
|
91
118
|
const dev = async () => {
|
|
92
|
-
shell.cd(
|
|
119
|
+
shell.cd(HOME_DIR);
|
|
93
120
|
const logger = buildLogger("Starting a local Mintlify instance...");
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
shell.cd("mint");
|
|
121
|
+
await fse.ensureDir(path.join(DOT_MINTLIFY, "mint"));
|
|
122
|
+
shell.cd(path.join(HOME_DIR, ".mintlify", "mint"));
|
|
98
123
|
let runYarn = true;
|
|
99
124
|
const gitInstalled = gitExists();
|
|
100
125
|
let firstInstallation = false;
|
|
101
|
-
|
|
126
|
+
const gitRepoInitialized = await pathExists(
|
|
127
|
+
path.join(DOT_MINTLIFY, "mint", ".git")
|
|
128
|
+
);
|
|
129
|
+
if (!gitRepoInitialized) {
|
|
102
130
|
firstInstallation = true;
|
|
103
131
|
if (gitInstalled) {
|
|
104
132
|
logger.start("Initializing local Mintlify instance...");
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
"git remote add -f mint-origin https://github.com/mintlify/mint.git"
|
|
108
|
-
{ silent: true }
|
|
133
|
+
shellExec("git init");
|
|
134
|
+
shellExec(
|
|
135
|
+
"git remote add -f mint-origin https://github.com/mintlify/mint.git"
|
|
109
136
|
);
|
|
110
137
|
} else {
|
|
111
138
|
logger.fail(
|
|
@@ -118,13 +145,11 @@ const dev = async () => {
|
|
|
118
145
|
const internet = await isInternetAvailable();
|
|
119
146
|
let pullOutput = null;
|
|
120
147
|
if (internet && gitInstalled) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
pullOutput =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
shell.exec("git config core.sparseCheckout false", { silent: true });
|
|
127
|
-
shell.exec("rm .git/info/sparse-checkout", { silent: true });
|
|
148
|
+
shellExec("git config core.sparseCheckout true");
|
|
149
|
+
shellExec('echo "client/" >> .git/info/sparse-checkout');
|
|
150
|
+
pullOutput = shellExec("git pull mint-origin main").stdout;
|
|
151
|
+
shellExec("git config core.sparseCheckout false");
|
|
152
|
+
shellExec("rm .git/info/sparse-checkout");
|
|
128
153
|
}
|
|
129
154
|
if (pullOutput === "Already up to date.\n") {
|
|
130
155
|
runYarn = false;
|
|
@@ -136,15 +161,17 @@ const dev = async () => {
|
|
|
136
161
|
}
|
|
137
162
|
logger.start("Updating dependencies...");
|
|
138
163
|
|
|
139
|
-
|
|
164
|
+
shellExec("yarn");
|
|
140
165
|
if (firstInstallation) {
|
|
141
166
|
logger.succeed("Installation complete");
|
|
142
167
|
} else {
|
|
143
168
|
logger.succeed("Dependencies updated");
|
|
144
169
|
}
|
|
145
170
|
}
|
|
146
|
-
|
|
147
|
-
|
|
171
|
+
if (!firstInstallation) {
|
|
172
|
+
await cleanOldFiles();
|
|
173
|
+
}
|
|
174
|
+
await saveInvocationPath();
|
|
148
175
|
await copyFiles(logger);
|
|
149
176
|
run();
|
|
150
177
|
};
|