create-absolutejs 0.3.5 → 0.3.6
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AvailableDependency, CreateConfiguration } from '../../types';
|
|
2
2
|
type CreateServerFileProps = Pick<CreateConfiguration, 'tailwind' | 'authProvider' | 'plugins' | 'buildDirectory' | 'assetsDirectory' | 'frontendDirectories'> & {
|
|
3
3
|
availablePlugins: AvailableDependency[];
|
|
4
|
-
|
|
4
|
+
backendDirectory: string;
|
|
5
5
|
};
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const generateServerFile: ({ tailwind, frontendDirectories, backendDirectory, authProvider, availablePlugins, buildDirectory, assetsDirectory, plugins }: CreateServerFileProps) => void;
|
|
7
7
|
export {};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { writeFileSync } from 'fs';
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
2
3
|
import { UNFOUND_INDEX } from '../../constants';
|
|
3
4
|
import { absoluteAuthPlugin, defaultDependencies, defaultPlugins, scopedStatePlugin } from '../../data';
|
|
4
|
-
export const
|
|
5
|
+
export const generateServerFile = ({ tailwind, frontendDirectories, backendDirectory, authProvider, availablePlugins, buildDirectory, assetsDirectory, plugins }) => {
|
|
6
|
+
const serverFilePath = join(backendDirectory, 'server.ts');
|
|
7
|
+
console.log(`Generating server file at ${serverFilePath}`);
|
|
5
8
|
const htmlDirectory = frontendDirectories['html'];
|
|
6
9
|
const reactDirectory = frontendDirectories['react'];
|
|
7
10
|
const svelteDirectory = frontendDirectories['svelte'];
|
|
@@ -87,7 +90,25 @@ export const createServerFile = ({ tailwind, frontendDirectories, serverFilePath
|
|
|
87
90
|
const vueImportSource = vueDirectory === ''
|
|
88
91
|
? '../frontend/pages/VueExample'
|
|
89
92
|
: `../frontend/${vueDirectory}/pages/VueExample`;
|
|
90
|
-
|
|
93
|
+
const vueImportLine = requiresSvelte
|
|
94
|
+
? `import { vueImports } from './utils/vueImporter';\n\nconst { VueExample } = vueImports;`
|
|
95
|
+
: `import VueExample from '${vueImportSource}.vue';`;
|
|
96
|
+
importLines.push(vueImportLine);
|
|
97
|
+
}
|
|
98
|
+
if (requiresVue && requiresSvelte) {
|
|
99
|
+
const vueImporter = `// This file is auto-generated by the AbsoluteJS project generator.
|
|
100
|
+
// It is required to use Vue and Svelte together in the same project.
|
|
101
|
+
// This is due to how the Vue Official plugin handles non .ts files.
|
|
102
|
+
|
|
103
|
+
import VueExample from "../../frontend/vue/pages/VueExample.vue";
|
|
104
|
+
|
|
105
|
+
export const vueImports = {
|
|
106
|
+
VueExample
|
|
107
|
+
} as const;
|
|
108
|
+
`;
|
|
109
|
+
const backendUtilsDirectory = join(backendDirectory, 'utils');
|
|
110
|
+
mkdirSync(backendUtilsDirectory, { recursive: true });
|
|
111
|
+
writeFileSync(join(backendUtilsDirectory, 'vueImporter.ts'), vueImporter);
|
|
91
112
|
}
|
|
92
113
|
const useStatements = uniqueDependencies
|
|
93
114
|
.flatMap(({ imports }) => imports ?? [])
|
package/dist/scaffold.js
CHANGED
|
@@ -8,7 +8,7 @@ import { addConfigurationFiles } from './generators/configurations/addConfigurat
|
|
|
8
8
|
import { createPackageJson } from './generators/configurations/generatePackageJson';
|
|
9
9
|
import { initalizeRoot } from './generators/configurations/initializeRoot';
|
|
10
10
|
import { scaffoldDatabase } from './generators/db/scaffoldDatabase';
|
|
11
|
-
import {
|
|
11
|
+
import { generateServerFile } from './generators/project/generateServer';
|
|
12
12
|
import { scaffoldFrontends } from './generators/project/scaffoldFrontends';
|
|
13
13
|
export const scaffold = ({ response: { projectName, codeQualityTool, initializeGitNow, databaseEngine,
|
|
14
14
|
// databaseHost,
|
|
@@ -34,15 +34,14 @@ useHTMLScripts, useTailwind, databaseDirectory, orm, frontends, plugins, authPro
|
|
|
34
34
|
projectName,
|
|
35
35
|
useTailwind
|
|
36
36
|
});
|
|
37
|
-
|
|
38
|
-
createServerFile({
|
|
37
|
+
generateServerFile({
|
|
39
38
|
assetsDirectory,
|
|
40
39
|
authProvider,
|
|
41
40
|
availablePlugins,
|
|
41
|
+
backendDirectory,
|
|
42
42
|
buildDirectory,
|
|
43
43
|
frontendDirectories,
|
|
44
44
|
plugins,
|
|
45
|
-
serverFilePath,
|
|
46
45
|
tailwind
|
|
47
46
|
});
|
|
48
47
|
void (databaseDirectory !== undefined &&
|
package/package.json
CHANGED