create-plasmic-app 0.0.98 → 0.0.99
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/dist/index.js +7 -8
- package/dist/utils/file-utils.d.ts +2 -2
- package/dist/utils/file-utils.js +29 -28
- package/package.json +5 -13
- package/src/index.ts +7 -9
- package/src/utils/file-utils.ts +44 -30
- package/.eslintrc.js +0 -15
package/dist/index.js
CHANGED
|
@@ -52,8 +52,8 @@ if (process.env.CPA_DEBUG_CHDIR) {
|
|
|
52
52
|
const createPlasmicAppVersion = (0, npm_utils_1.updateNotify)();
|
|
53
53
|
// Specify command-line args
|
|
54
54
|
const argv = yargs_1.default
|
|
55
|
-
.command("$0 [projectName]", "Create a Plasmic app with Next.js, Gatsby, or React (Vite)", (
|
|
56
|
-
|
|
55
|
+
.command("$0 [projectName]", "Create a Plasmic app with Next.js, Gatsby, or React (Vite)", (yargs2) => {
|
|
56
|
+
yargs2
|
|
57
57
|
.usage("Usage: $0 [projectName] [options]")
|
|
58
58
|
.positional("projectName", {
|
|
59
59
|
describe: "Project and NPM package name",
|
|
@@ -91,13 +91,13 @@ const argv = yargs_1.default
|
|
|
91
91
|
.strict()
|
|
92
92
|
.help("h")
|
|
93
93
|
.alias("h", "help")
|
|
94
|
-
.check((
|
|
95
|
-
if (
|
|
96
|
-
!(
|
|
94
|
+
.check((argv2) => {
|
|
95
|
+
if (argv2.scheme === "loader" &&
|
|
96
|
+
!(argv2.platform === "nextjs" || argv2.platform === "gatsby")) {
|
|
97
97
|
throw new Error(`Loader scheme may only be used with Next.js or Gatsby`);
|
|
98
98
|
}
|
|
99
|
-
if (
|
|
100
|
-
!(
|
|
99
|
+
if (argv2.appDir &&
|
|
100
|
+
!(argv2.platform === "nextjs" && argv2.scheme === "loader")) {
|
|
101
101
|
throw new Error(`App dir may only be used with Next.js and loader scheme`);
|
|
102
102
|
}
|
|
103
103
|
return true;
|
|
@@ -133,7 +133,6 @@ function maybePrompt(question) {
|
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
135
|
// Keeping these as globals to easily share with our `crash` function
|
|
136
|
-
const projectName = argv._.length > 0 ? argv._[0] + "" : undefined;
|
|
137
136
|
let resolvedProjectPath;
|
|
138
137
|
/**
|
|
139
138
|
* Main function
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PlasmicConfig } from "@plasmicapp/cli/dist/utils/config-utils";
|
|
2
|
-
import { JsOrTs, PlatformType } from "
|
|
2
|
+
import { JsOrTs, PlatformType } from "./types";
|
|
3
3
|
/**
|
|
4
4
|
* Runs the search pattern through `glob` and deletes all resulting files
|
|
5
5
|
* @param searchPattern - glob search query
|
|
@@ -28,7 +28,7 @@ export declare function generateHomePage(componentAbsPath: string, indexAbsPath:
|
|
|
28
28
|
* @param noPages - don't render links to pages
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
|
-
export declare function generateWelcomePage(config:
|
|
31
|
+
export declare function generateWelcomePage(config: PlasmicConfig, platform: string): string;
|
|
32
32
|
export declare function getPlasmicConfig(projectPath: string, platform: PlatformType, scheme: string): Promise<PlasmicConfig>;
|
|
33
33
|
export declare function ensureTsconfig(projectPath: string): Promise<void>;
|
|
34
34
|
export declare function ifTs(ts: JsOrTs, str: string): string;
|
package/dist/utils/file-utils.js
CHANGED
|
@@ -134,40 +134,41 @@ exports.generateHomePage = generateHomePage;
|
|
|
134
134
|
* @returns
|
|
135
135
|
*/
|
|
136
136
|
function generateWelcomePage(config, platform) {
|
|
137
|
-
var _a, _b, _c;
|
|
138
|
-
let
|
|
139
|
-
let pageComponents;
|
|
140
|
-
let pagesDir;
|
|
137
|
+
var _a, _b, _c, _d;
|
|
138
|
+
let pages;
|
|
141
139
|
if (platform !== "react" && config && lodash_1.default.isArray(config.projects)) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
140
|
+
const components = lodash_1.default.flatMap(config.projects, (p) => p.components).filter((c) => c.componentType === "page");
|
|
141
|
+
const dir = (_b = (_a = config === null || config === void 0 ? void 0 : config.nextjsConfig) === null || _a === void 0 ? void 0 : _a.pagesDir) !== null && _b !== void 0 ? _b : (_c = config === null || config === void 0 ? void 0 : config.gatsbyConfig) === null || _c === void 0 ? void 0 : _c.pagesDir;
|
|
142
|
+
if (components.length > 0 && dir) {
|
|
143
|
+
pages = {
|
|
144
|
+
components,
|
|
145
|
+
dir,
|
|
146
|
+
getPageSection: () => {
|
|
147
|
+
const pageLinks = components
|
|
148
|
+
.map((pc) => {
|
|
149
|
+
// Get the relative path on the filesystem
|
|
150
|
+
const relativePath = path.relative(dir, pc.importSpec.modulePath);
|
|
151
|
+
// Format as an absolute path without the extension name
|
|
152
|
+
const relativeLink = "/" + stripExtension(relativePath);
|
|
153
|
+
if (platform === "nextjs") {
|
|
154
|
+
return `<li><Link href="${relativeLink}">${pc.name} - ${relativeLink}</Link></li>`;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
return `<li><a style={{ color: "blue" }} href="${relativeLink}">${pc.name} - ${relativeLink}</a></li>`;
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
.join("\n");
|
|
161
|
+
return `
|
|
164
162
|
<h3>Your pages:</h3>
|
|
165
163
|
<ul>
|
|
166
164
|
${pageLinks}
|
|
167
165
|
</ul>
|
|
168
166
|
`;
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
const content = (0, welcomePage_1.WELCOME_PAGE)(!!pages, platform, (_d = pages === null || pages === void 0 ? void 0 : pages.getPageSection()) !== null && _d !== void 0 ? _d : "");
|
|
171
172
|
return content;
|
|
172
173
|
}
|
|
173
174
|
exports.generateWelcomePage = generateWelcomePage;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-plasmic-app",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.99",
|
|
4
4
|
"description": "Create Plasmic-powered React apps",
|
|
5
5
|
"main": "./dist/lib.js",
|
|
6
6
|
"types": "./dist/lib.d.ts",
|
|
@@ -12,9 +12,8 @@
|
|
|
12
12
|
"create-plasmic-app": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand --watch",
|
|
15
|
+
"test": "TEST_CWD=`pwd` yarn --cwd=../.. test --passWithNoTests",
|
|
16
|
+
"coverage": "TEST_CWD=`pwd` yarn --cwd=../.. test --coverage --passWithNoTests",
|
|
18
17
|
"build": "eslint 'src/**' && tsc",
|
|
19
18
|
"run-cpa": "yarn build && ts-node run-cpa.ts",
|
|
20
19
|
"create-plasmic-app": "ts-node src/index.ts",
|
|
@@ -30,14 +29,7 @@
|
|
|
30
29
|
"@types/semver": "^7.3.5",
|
|
31
30
|
"@types/update-notifier": "^5.0.0",
|
|
32
31
|
"@types/validate-npm-package-name": "^3.0.2",
|
|
33
|
-
"@types/yargs": "^16.0.0"
|
|
34
|
-
"@typescript-eslint/eslint-plugin": "5.59.0",
|
|
35
|
-
"@typescript-eslint/parser": "5.59.0",
|
|
36
|
-
"eslint": "^8.50.0",
|
|
37
|
-
"jest": "^26.6.3",
|
|
38
|
-
"jest-circus": "^26.6.3",
|
|
39
|
-
"ts-jest": "^26.5.3",
|
|
40
|
-
"ts-node": "^10.9.1"
|
|
32
|
+
"@types/yargs": "^16.0.0"
|
|
41
33
|
},
|
|
42
34
|
"dependencies": {
|
|
43
35
|
"@plasmicapp/cli": "0.1.187",
|
|
@@ -54,5 +46,5 @@
|
|
|
54
46
|
"validate-npm-package-name": "^3.0.0",
|
|
55
47
|
"yargs": "^16.2.0"
|
|
56
48
|
},
|
|
57
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "951909f9952ffe42fefb6e15a1797cdc1aee1197"
|
|
58
50
|
}
|
package/src/index.ts
CHANGED
|
@@ -22,8 +22,8 @@ const argv = yargs
|
|
|
22
22
|
.command(
|
|
23
23
|
"$0 [projectName]",
|
|
24
24
|
"Create a Plasmic app with Next.js, Gatsby, or React (Vite)",
|
|
25
|
-
(
|
|
26
|
-
|
|
25
|
+
(yargs2) => {
|
|
26
|
+
yargs2
|
|
27
27
|
.usage("Usage: $0 [projectName] [options]")
|
|
28
28
|
.positional("projectName", {
|
|
29
29
|
describe: "Project and NPM package name",
|
|
@@ -62,17 +62,17 @@ const argv = yargs
|
|
|
62
62
|
.strict()
|
|
63
63
|
.help("h")
|
|
64
64
|
.alias("h", "help")
|
|
65
|
-
.check((
|
|
65
|
+
.check((argv2) => {
|
|
66
66
|
if (
|
|
67
|
-
|
|
68
|
-
!(
|
|
67
|
+
argv2.scheme === "loader" &&
|
|
68
|
+
!(argv2.platform === "nextjs" || argv2.platform === "gatsby")
|
|
69
69
|
) {
|
|
70
70
|
throw new Error(`Loader scheme may only be used with Next.js or Gatsby`);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
if (
|
|
74
|
-
|
|
75
|
-
!(
|
|
74
|
+
argv2.appDir &&
|
|
75
|
+
!(argv2.platform === "nextjs" && argv2.scheme === "loader")
|
|
76
76
|
) {
|
|
77
77
|
throw new Error(
|
|
78
78
|
`App dir may only be used with Next.js and loader scheme`
|
|
@@ -119,8 +119,6 @@ async function maybePrompt<T>(
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
// Keeping these as globals to easily share with our `crash` function
|
|
122
|
-
const projectName: string | undefined =
|
|
123
|
-
argv._.length > 0 ? argv._[0] + "" : undefined;
|
|
124
122
|
let resolvedProjectPath: string;
|
|
125
123
|
|
|
126
124
|
/**
|
package/src/utils/file-utils.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
ComponentConfig,
|
|
3
|
+
PlasmicConfig,
|
|
4
|
+
} from "@plasmicapp/cli/dist/utils/config-utils";
|
|
2
5
|
import { existsSync, promises as fs, unlinkSync } from "fs";
|
|
3
6
|
import glob from "glob";
|
|
4
7
|
import L from "lodash";
|
|
5
8
|
import * as path from "upath";
|
|
6
9
|
import { README } from "../templates/readme";
|
|
7
10
|
import { WELCOME_PAGE } from "../templates/welcomePage";
|
|
8
|
-
import { JsOrTs, PlatformType } from "../utils/types";
|
|
9
11
|
import { ensure } from "./lang-utils";
|
|
10
12
|
import { installUpgrade } from "./npm-utils";
|
|
13
|
+
import { JsOrTs, PlatformType } from "./types";
|
|
11
14
|
|
|
12
15
|
/**
|
|
13
16
|
* Runs the search pattern through `glob` and deletes all resulting files
|
|
@@ -121,45 +124,56 @@ export default App;
|
|
|
121
124
|
* @param noPages - don't render links to pages
|
|
122
125
|
* @returns
|
|
123
126
|
*/
|
|
124
|
-
export function generateWelcomePage(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
127
|
+
export function generateWelcomePage(
|
|
128
|
+
config: PlasmicConfig,
|
|
129
|
+
platform: string
|
|
130
|
+
): string {
|
|
131
|
+
let pages:
|
|
132
|
+
| {
|
|
133
|
+
components: ComponentConfig[];
|
|
134
|
+
dir: string;
|
|
135
|
+
getPageSection: () => string;
|
|
136
|
+
}
|
|
137
|
+
| undefined;
|
|
128
138
|
if (platform !== "react" && config && L.isArray(config.projects)) {
|
|
129
|
-
|
|
139
|
+
const components = L.flatMap(config.projects, (p) => p.components).filter(
|
|
130
140
|
(c) => c.componentType === "page"
|
|
131
141
|
);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
142
|
+
const dir =
|
|
143
|
+
config?.nextjsConfig?.pagesDir ?? config?.gatsbyConfig?.pagesDir;
|
|
144
|
+
if (components.length > 0 && dir) {
|
|
145
|
+
pages = {
|
|
146
|
+
components,
|
|
147
|
+
dir,
|
|
148
|
+
getPageSection: () => {
|
|
149
|
+
const pageLinks = components
|
|
150
|
+
.map((pc) => {
|
|
151
|
+
// Get the relative path on the filesystem
|
|
152
|
+
const relativePath = path.relative(dir, pc.importSpec.modulePath);
|
|
153
|
+
// Format as an absolute path without the extension name
|
|
154
|
+
const relativeLink = "/" + stripExtension(relativePath);
|
|
155
|
+
if (platform === "nextjs") {
|
|
156
|
+
return `<li><Link href="${relativeLink}">${pc.name} - ${relativeLink}</Link></li>`;
|
|
157
|
+
} else {
|
|
158
|
+
return `<li><a style={{ color: "blue" }} href="${relativeLink}">${pc.name} - ${relativeLink}</a></li>`;
|
|
159
|
+
}
|
|
160
|
+
})
|
|
161
|
+
.join("\n");
|
|
162
|
+
return `
|
|
152
163
|
<h3>Your pages:</h3>
|
|
153
164
|
<ul>
|
|
154
165
|
${pageLinks}
|
|
155
166
|
</ul>
|
|
156
167
|
`;
|
|
157
|
-
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
158
172
|
|
|
159
173
|
const content = WELCOME_PAGE(
|
|
160
|
-
|
|
174
|
+
!!pages,
|
|
161
175
|
platform,
|
|
162
|
-
|
|
176
|
+
pages?.getPageSection() ?? ""
|
|
163
177
|
);
|
|
164
178
|
return content;
|
|
165
179
|
}
|
package/.eslintrc.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
root: true,
|
|
3
|
-
env: {
|
|
4
|
-
browser: true,
|
|
5
|
-
es2020: true,
|
|
6
|
-
},
|
|
7
|
-
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
|
|
8
|
-
parser: "@typescript-eslint/parser",
|
|
9
|
-
parserOptions: {
|
|
10
|
-
ecmaVersion: 11,
|
|
11
|
-
sourceType: "module",
|
|
12
|
-
},
|
|
13
|
-
plugins: ["@typescript-eslint"],
|
|
14
|
-
rules: {},
|
|
15
|
-
};
|