@akanjs/config 0.9.12 → 0.9.14
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/cjs/src/akanConfig.js +85 -34
- package/cjs/src/nextConfig.js +1 -6
- package/esm/src/akanConfig.js +85 -34
- package/esm/src/nextConfig.js +1 -5
- package/package.json +1 -1
- package/src/akanConfig.d.ts +2 -1
- package/src/types.d.ts +15 -2
package/cjs/src/akanConfig.js
CHANGED
|
@@ -31,6 +31,7 @@ __export(akanConfig_exports, {
|
|
|
31
31
|
getLibConfig: () => getLibConfig,
|
|
32
32
|
getNextConfig: () => getNextConfig,
|
|
33
33
|
makeAppConfig: () => makeAppConfig,
|
|
34
|
+
makeDockerfile: () => makeDockerfile,
|
|
34
35
|
makeLibConfig: () => makeLibConfig
|
|
35
36
|
});
|
|
36
37
|
module.exports = __toCommonJS(akanConfig_exports);
|
|
@@ -43,43 +44,11 @@ const makeAppConfig = (config, props) => {
|
|
|
43
44
|
rootLib: config.rootLib,
|
|
44
45
|
libs: config.libs ?? [],
|
|
45
46
|
backend: {
|
|
46
|
-
|
|
47
|
-
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
48
|
-
RUN apt-get update && apt-get upgrade -y && apt-get install -y git redis build-essential python3 ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils udev ffmpeg && rm -rf /var/lib/apt/lists/*
|
|
49
|
-
ARG TARGETARCH
|
|
50
|
-
RUN if [ "$TARGETARCH" = "amd64" ]; then wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian92-x86_64-100.3.1.deb && apt-get install -y ./mongodb-database-tools-*.deb && rm -f mongodb-database-tools-*.deb; fi
|
|
51
|
-
RUN mkdir -p /workspace
|
|
52
|
-
WORKDIR /workspace
|
|
53
|
-
COPY ./package.json ./package.json
|
|
54
|
-
RUN npx pnpm i --prod
|
|
55
|
-
COPY . .
|
|
56
|
-
ENV PORT 8080
|
|
57
|
-
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
58
|
-
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
59
|
-
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
60
|
-
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
61
|
-
ENV NEXT_PUBLIC_ENV=${env}
|
|
62
|
-
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
63
|
-
CMD ["node", "main.js"]`,
|
|
47
|
+
docker: makeDockerfile("backend", config.backend?.docker ?? {}, props),
|
|
64
48
|
explicitDependencies: config.backend?.explicitDependencies ?? []
|
|
65
49
|
},
|
|
66
50
|
frontend: {
|
|
67
|
-
|
|
68
|
-
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
69
|
-
RUN apk --no-cache add git
|
|
70
|
-
RUN mkdir -p /workspace
|
|
71
|
-
WORKDIR /workspace
|
|
72
|
-
COPY ./package.json ./package.json
|
|
73
|
-
RUN npx pnpm i --prod
|
|
74
|
-
COPY . .
|
|
75
|
-
ENV PORT 4200
|
|
76
|
-
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
77
|
-
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
78
|
-
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
79
|
-
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
80
|
-
ENV NEXT_PUBLIC_ENV=${env}
|
|
81
|
-
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
82
|
-
CMD ["npm", "start"]`,
|
|
51
|
+
docker: makeDockerfile("frontend", config.frontend?.docker ?? {}, props),
|
|
83
52
|
nextConfig: (0, import_nextConfig.withBase)(
|
|
84
53
|
name,
|
|
85
54
|
config.frontend?.nextConfig ? typeof config.frontend.nextConfig === "function" ? config.frontend.nextConfig() : config.frontend.nextConfig : {},
|
|
@@ -139,3 +108,85 @@ const getNextConfig = (configImp, appData) => {
|
|
|
139
108
|
const akanConfig = makeAppConfig(config, props);
|
|
140
109
|
return akanConfig.frontend.nextConfig;
|
|
141
110
|
};
|
|
111
|
+
const getDockerRunScripts = (runs) => {
|
|
112
|
+
return runs.map((run) => {
|
|
113
|
+
if (typeof run === "string")
|
|
114
|
+
return `RUN ${run}`;
|
|
115
|
+
else
|
|
116
|
+
return Object.entries(run).map(([arch, script]) => `RUN if [ "$TARGETARCH" = "${arch}" ]; then ${script}; fi`).join("\n");
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
const getDockerImageScript = (image) => {
|
|
120
|
+
if (typeof image === "string")
|
|
121
|
+
return `FROM ${image}`;
|
|
122
|
+
else
|
|
123
|
+
return Object.entries(image).map(([arch, image2]) => `FROM ${image2} AS ${arch}`).join("\n");
|
|
124
|
+
};
|
|
125
|
+
const makeDockerfile = (type, config, props) => {
|
|
126
|
+
const { name, repoName, serveDomain, env } = props;
|
|
127
|
+
if (config.content)
|
|
128
|
+
return { content: config.content, image: {}, preRuns: [], postRuns: [], command: [] };
|
|
129
|
+
const preRunScripts = getDockerRunScripts(config.preRuns ?? []);
|
|
130
|
+
const postRunScripts = getDockerRunScripts(config.postRuns ?? []);
|
|
131
|
+
if (type === "backend") {
|
|
132
|
+
const imageScript = config.image ? getDockerImageScript(config.image) : "FROM node:22-slim";
|
|
133
|
+
const command = config.command ?? ["node", "main.js"];
|
|
134
|
+
const content = `${imageScript}
|
|
135
|
+
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
136
|
+
RUN apt-get update && apt-get upgrade -y
|
|
137
|
+
RUN apt-get install -y git redis build-essential python3 ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils udev ffmpeg && rm -rf /var/lib/apt/lists/*
|
|
138
|
+
ARG TARGETARCH
|
|
139
|
+
RUN if [ "$TARGETARCH" = "amd64" ]; then wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian92-x86_64-100.3.1.deb && apt-get install -y ./mongodb-database-tools-*.deb && rm -f mongodb-database-tools-*.deb; fi
|
|
140
|
+
${preRunScripts.join("\n")}
|
|
141
|
+
RUN mkdir -p /workspace
|
|
142
|
+
WORKDIR /workspace
|
|
143
|
+
COPY ./package.json ./package.json
|
|
144
|
+
RUN npx pnpm i --prod
|
|
145
|
+
COPY . .
|
|
146
|
+
ENV PORT 8080
|
|
147
|
+
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
148
|
+
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
149
|
+
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
150
|
+
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
151
|
+
ENV NEXT_PUBLIC_ENV=${env}
|
|
152
|
+
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
153
|
+
${postRunScripts.join("\n")}
|
|
154
|
+
CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
155
|
+
return {
|
|
156
|
+
content,
|
|
157
|
+
image: imageScript,
|
|
158
|
+
preRuns: config.preRuns ?? [],
|
|
159
|
+
postRuns: config.postRuns ?? [],
|
|
160
|
+
command
|
|
161
|
+
};
|
|
162
|
+
} else {
|
|
163
|
+
const imageScript = config.image ? getDockerImageScript(config.image) : "FROM node:22-alpine";
|
|
164
|
+
const command = config.command ?? ["npm", "start"];
|
|
165
|
+
const content = `${imageScript}
|
|
166
|
+
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
167
|
+
ARG TARGETARCH
|
|
168
|
+
RUN apk --no-cache add git
|
|
169
|
+
${preRunScripts.join("\n")}
|
|
170
|
+
RUN mkdir -p /workspace
|
|
171
|
+
WORKDIR /workspace
|
|
172
|
+
COPY ./package.json ./package.json
|
|
173
|
+
RUN npx pnpm i --prod
|
|
174
|
+
COPY . .
|
|
175
|
+
ENV PORT 4200
|
|
176
|
+
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
177
|
+
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
178
|
+
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
179
|
+
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
180
|
+
ENV NEXT_PUBLIC_ENV=${env}
|
|
181
|
+
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
182
|
+
${postRunScripts.join("\n")}
|
|
183
|
+
CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
184
|
+
return {
|
|
185
|
+
content,
|
|
186
|
+
image: imageScript,
|
|
187
|
+
preRuns: config.preRuns ?? [],
|
|
188
|
+
postRuns: config.postRuns ?? [],
|
|
189
|
+
command
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
};
|
package/cjs/src/nextConfig.js
CHANGED
|
@@ -35,8 +35,6 @@ module.exports = __toCommonJS(nextConfig_exports);
|
|
|
35
35
|
var import_bundle_analyzer = __toESM(require("@next/bundle-analyzer"));
|
|
36
36
|
var import_next_pwa = __toESM(require("next-pwa"));
|
|
37
37
|
var import_cache = __toESM(require("next-pwa/cache.js"));
|
|
38
|
-
var import_path = __toESM(require("path"));
|
|
39
|
-
const import_meta = {};
|
|
40
38
|
const composePlugins = (...plugins) => {
|
|
41
39
|
return function(baseConfig) {
|
|
42
40
|
return async function combined(phase, context) {
|
|
@@ -56,7 +54,6 @@ const composePlugins = (...plugins) => {
|
|
|
56
54
|
const commandType = process.env.AKAN_COMMAND_TYPE?.includes("start") ? "start" : process.env.AKAN_COMMAND_TYPE?.includes("build") ? "build" : "deploy";
|
|
57
55
|
const devDomain = process.env.NEXT_PUBLIC_SERVE_DOMAIN ?? "akanjs.com";
|
|
58
56
|
const withBase = (appName, config, libs, routes = []) => {
|
|
59
|
-
const __dirname = import_path.default.dirname(new URL(import_meta.url).pathname);
|
|
60
57
|
const withPWA = (0, import_next_pwa.default)({
|
|
61
58
|
dest: "public",
|
|
62
59
|
register: true,
|
|
@@ -127,15 +124,13 @@ const withBase = (appName, config, libs, routes = []) => {
|
|
|
127
124
|
webpack: (config2) => {
|
|
128
125
|
config2.resolve.alias.canvas = false;
|
|
129
126
|
config2.resolve.alias.encoding = false;
|
|
130
|
-
if (process.env.USE_AKANJS_PKGS === "true")
|
|
131
|
-
config2.resolve.alias["@akanjs/config"] = import_path.default.resolve(__dirname, "../../../../pkgs/@akanjs/config");
|
|
132
127
|
return config2;
|
|
133
128
|
},
|
|
134
129
|
turbopack: {
|
|
135
130
|
resolveAlias: {
|
|
136
131
|
// canvas: false,
|
|
137
132
|
// encoding: false,
|
|
138
|
-
...process.env.USE_AKANJS_PKGS === "true" ? { "@akanjs/config":
|
|
133
|
+
// ...(process.env.USE_AKANJS_PKGS === "true" ? { "@akanjs/config": "../../pkgs/@akanjs/config" } : {}),
|
|
139
134
|
...config.turbopack?.resolveAlias ?? {}
|
|
140
135
|
}
|
|
141
136
|
},
|
package/esm/src/akanConfig.js
CHANGED
|
@@ -7,43 +7,11 @@ const makeAppConfig = (config, props) => {
|
|
|
7
7
|
rootLib: config.rootLib,
|
|
8
8
|
libs: config.libs ?? [],
|
|
9
9
|
backend: {
|
|
10
|
-
|
|
11
|
-
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
12
|
-
RUN apt-get update && apt-get upgrade -y && apt-get install -y git redis build-essential python3 ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils udev ffmpeg && rm -rf /var/lib/apt/lists/*
|
|
13
|
-
ARG TARGETARCH
|
|
14
|
-
RUN if [ "$TARGETARCH" = "amd64" ]; then wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian92-x86_64-100.3.1.deb && apt-get install -y ./mongodb-database-tools-*.deb && rm -f mongodb-database-tools-*.deb; fi
|
|
15
|
-
RUN mkdir -p /workspace
|
|
16
|
-
WORKDIR /workspace
|
|
17
|
-
COPY ./package.json ./package.json
|
|
18
|
-
RUN npx pnpm i --prod
|
|
19
|
-
COPY . .
|
|
20
|
-
ENV PORT 8080
|
|
21
|
-
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
22
|
-
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
23
|
-
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
24
|
-
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
25
|
-
ENV NEXT_PUBLIC_ENV=${env}
|
|
26
|
-
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
27
|
-
CMD ["node", "main.js"]`,
|
|
10
|
+
docker: makeDockerfile("backend", config.backend?.docker ?? {}, props),
|
|
28
11
|
explicitDependencies: config.backend?.explicitDependencies ?? []
|
|
29
12
|
},
|
|
30
13
|
frontend: {
|
|
31
|
-
|
|
32
|
-
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
33
|
-
RUN apk --no-cache add git
|
|
34
|
-
RUN mkdir -p /workspace
|
|
35
|
-
WORKDIR /workspace
|
|
36
|
-
COPY ./package.json ./package.json
|
|
37
|
-
RUN npx pnpm i --prod
|
|
38
|
-
COPY . .
|
|
39
|
-
ENV PORT 4200
|
|
40
|
-
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
41
|
-
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
42
|
-
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
43
|
-
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
44
|
-
ENV NEXT_PUBLIC_ENV=${env}
|
|
45
|
-
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
46
|
-
CMD ["npm", "start"]`,
|
|
14
|
+
docker: makeDockerfile("frontend", config.frontend?.docker ?? {}, props),
|
|
47
15
|
nextConfig: withBase(
|
|
48
16
|
name,
|
|
49
17
|
config.frontend?.nextConfig ? typeof config.frontend.nextConfig === "function" ? config.frontend.nextConfig() : config.frontend.nextConfig : {},
|
|
@@ -103,10 +71,93 @@ const getNextConfig = (configImp, appData) => {
|
|
|
103
71
|
const akanConfig = makeAppConfig(config, props);
|
|
104
72
|
return akanConfig.frontend.nextConfig;
|
|
105
73
|
};
|
|
74
|
+
const getDockerRunScripts = (runs) => {
|
|
75
|
+
return runs.map((run) => {
|
|
76
|
+
if (typeof run === "string")
|
|
77
|
+
return `RUN ${run}`;
|
|
78
|
+
else
|
|
79
|
+
return Object.entries(run).map(([arch, script]) => `RUN if [ "$TARGETARCH" = "${arch}" ]; then ${script}; fi`).join("\n");
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
const getDockerImageScript = (image) => {
|
|
83
|
+
if (typeof image === "string")
|
|
84
|
+
return `FROM ${image}`;
|
|
85
|
+
else
|
|
86
|
+
return Object.entries(image).map(([arch, image2]) => `FROM ${image2} AS ${arch}`).join("\n");
|
|
87
|
+
};
|
|
88
|
+
const makeDockerfile = (type, config, props) => {
|
|
89
|
+
const { name, repoName, serveDomain, env } = props;
|
|
90
|
+
if (config.content)
|
|
91
|
+
return { content: config.content, image: {}, preRuns: [], postRuns: [], command: [] };
|
|
92
|
+
const preRunScripts = getDockerRunScripts(config.preRuns ?? []);
|
|
93
|
+
const postRunScripts = getDockerRunScripts(config.postRuns ?? []);
|
|
94
|
+
if (type === "backend") {
|
|
95
|
+
const imageScript = config.image ? getDockerImageScript(config.image) : "FROM node:22-slim";
|
|
96
|
+
const command = config.command ?? ["node", "main.js"];
|
|
97
|
+
const content = `${imageScript}
|
|
98
|
+
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
99
|
+
RUN apt-get update && apt-get upgrade -y
|
|
100
|
+
RUN apt-get install -y git redis build-essential python3 ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils udev ffmpeg && rm -rf /var/lib/apt/lists/*
|
|
101
|
+
ARG TARGETARCH
|
|
102
|
+
RUN if [ "$TARGETARCH" = "amd64" ]; then wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian92-x86_64-100.3.1.deb && apt-get install -y ./mongodb-database-tools-*.deb && rm -f mongodb-database-tools-*.deb; fi
|
|
103
|
+
${preRunScripts.join("\n")}
|
|
104
|
+
RUN mkdir -p /workspace
|
|
105
|
+
WORKDIR /workspace
|
|
106
|
+
COPY ./package.json ./package.json
|
|
107
|
+
RUN npx pnpm i --prod
|
|
108
|
+
COPY . .
|
|
109
|
+
ENV PORT 8080
|
|
110
|
+
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
111
|
+
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
112
|
+
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
113
|
+
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
114
|
+
ENV NEXT_PUBLIC_ENV=${env}
|
|
115
|
+
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
116
|
+
${postRunScripts.join("\n")}
|
|
117
|
+
CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
118
|
+
return {
|
|
119
|
+
content,
|
|
120
|
+
image: imageScript,
|
|
121
|
+
preRuns: config.preRuns ?? [],
|
|
122
|
+
postRuns: config.postRuns ?? [],
|
|
123
|
+
command
|
|
124
|
+
};
|
|
125
|
+
} else {
|
|
126
|
+
const imageScript = config.image ? getDockerImageScript(config.image) : "FROM node:22-alpine";
|
|
127
|
+
const command = config.command ?? ["npm", "start"];
|
|
128
|
+
const content = `${imageScript}
|
|
129
|
+
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
|
|
130
|
+
ARG TARGETARCH
|
|
131
|
+
RUN apk --no-cache add git
|
|
132
|
+
${preRunScripts.join("\n")}
|
|
133
|
+
RUN mkdir -p /workspace
|
|
134
|
+
WORKDIR /workspace
|
|
135
|
+
COPY ./package.json ./package.json
|
|
136
|
+
RUN npx pnpm i --prod
|
|
137
|
+
COPY . .
|
|
138
|
+
ENV PORT 4200
|
|
139
|
+
ENV NODE_OPTIONS=--max_old_space_size=8192
|
|
140
|
+
ENV NEXT_PUBLIC_REPO_NAME=${repoName}
|
|
141
|
+
ENV NEXT_PUBLIC_SERVE_DOMAIN=${serveDomain}
|
|
142
|
+
ENV NEXT_PUBLIC_APP_NAME=${name}
|
|
143
|
+
ENV NEXT_PUBLIC_ENV=${env}
|
|
144
|
+
ENV NEXT_PUBLIC_OPERATION_MODE=cloud
|
|
145
|
+
${postRunScripts.join("\n")}
|
|
146
|
+
CMD [${command.map((c) => `"${c}"`).join(",")}]`;
|
|
147
|
+
return {
|
|
148
|
+
content,
|
|
149
|
+
image: imageScript,
|
|
150
|
+
preRuns: config.preRuns ?? [],
|
|
151
|
+
postRuns: config.postRuns ?? [],
|
|
152
|
+
command
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
};
|
|
106
156
|
export {
|
|
107
157
|
getAppConfig,
|
|
108
158
|
getLibConfig,
|
|
109
159
|
getNextConfig,
|
|
110
160
|
makeAppConfig,
|
|
161
|
+
makeDockerfile,
|
|
111
162
|
makeLibConfig
|
|
112
163
|
};
|
package/esm/src/nextConfig.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import withAnalyze from "@next/bundle-analyzer";
|
|
2
2
|
import pwa from "next-pwa";
|
|
3
3
|
import runtimeCaching from "next-pwa/cache.js";
|
|
4
|
-
import path from "path";
|
|
5
4
|
const composePlugins = (...plugins) => {
|
|
6
5
|
return function(baseConfig) {
|
|
7
6
|
return async function combined(phase, context) {
|
|
@@ -21,7 +20,6 @@ const composePlugins = (...plugins) => {
|
|
|
21
20
|
const commandType = process.env.AKAN_COMMAND_TYPE?.includes("start") ? "start" : process.env.AKAN_COMMAND_TYPE?.includes("build") ? "build" : "deploy";
|
|
22
21
|
const devDomain = process.env.NEXT_PUBLIC_SERVE_DOMAIN ?? "akanjs.com";
|
|
23
22
|
const withBase = (appName, config, libs, routes = []) => {
|
|
24
|
-
const __dirname = path.dirname(new URL(import.meta.url).pathname);
|
|
25
23
|
const withPWA = pwa({
|
|
26
24
|
dest: "public",
|
|
27
25
|
register: true,
|
|
@@ -92,15 +90,13 @@ const withBase = (appName, config, libs, routes = []) => {
|
|
|
92
90
|
webpack: (config2) => {
|
|
93
91
|
config2.resolve.alias.canvas = false;
|
|
94
92
|
config2.resolve.alias.encoding = false;
|
|
95
|
-
if (process.env.USE_AKANJS_PKGS === "true")
|
|
96
|
-
config2.resolve.alias["@akanjs/config"] = path.resolve(__dirname, "../../../../pkgs/@akanjs/config");
|
|
97
93
|
return config2;
|
|
98
94
|
},
|
|
99
95
|
turbopack: {
|
|
100
96
|
resolveAlias: {
|
|
101
97
|
// canvas: false,
|
|
102
98
|
// encoding: false,
|
|
103
|
-
...process.env.USE_AKANJS_PKGS === "true" ? { "@akanjs/config":
|
|
99
|
+
// ...(process.env.USE_AKANJS_PKGS === "true" ? { "@akanjs/config": "../../pkgs/@akanjs/config" } : {}),
|
|
104
100
|
...config.turbopack?.resolveAlias ?? {}
|
|
105
101
|
}
|
|
106
102
|
},
|
package/package.json
CHANGED
package/src/akanConfig.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { AppConfig, AppConfigResult, DeepPartial, LibConfigResult, RunnerProps } from "@akanjs/config";
|
|
1
|
+
import type { AppConfig, AppConfigResult, DeepPartial, DockerConfig, LibConfigResult, RunnerProps } from "@akanjs/config";
|
|
2
2
|
import type { NextConfig } from "next";
|
|
3
3
|
export declare const makeAppConfig: (config: DeepPartial<AppConfigResult>, props: RunnerProps) => AppConfigResult;
|
|
4
4
|
export declare const getAppConfig: (appRoot: string, props: RunnerProps) => Promise<AppConfigResult>;
|
|
5
5
|
export declare const makeLibConfig: (config: DeepPartial<LibConfigResult>, props: RunnerProps) => LibConfigResult;
|
|
6
6
|
export declare const getLibConfig: (libRoot: string, props: RunnerProps) => Promise<LibConfigResult>;
|
|
7
7
|
export declare const getNextConfig: (configImp: AppConfig, appData: any) => NextConfig | (() => Promise<NextConfig> | NextConfig);
|
|
8
|
+
export declare const makeDockerfile: (type: "backend" | "frontend", config: DeepPartial<DockerConfig>, props: RunnerProps) => DockerConfig;
|
package/src/types.d.ts
CHANGED
|
@@ -11,15 +11,28 @@ export type Arch = "amd64" | "arm64";
|
|
|
11
11
|
export type ExplicitDependencies = string[] | {
|
|
12
12
|
[key in Arch]: string[];
|
|
13
13
|
};
|
|
14
|
+
export interface DockerConfig {
|
|
15
|
+
content: string;
|
|
16
|
+
image: string | {
|
|
17
|
+
[key in Arch]?: string;
|
|
18
|
+
};
|
|
19
|
+
preRuns: (string | {
|
|
20
|
+
[key in Arch]?: string;
|
|
21
|
+
})[];
|
|
22
|
+
postRuns: (string | {
|
|
23
|
+
[key in Arch]?: string;
|
|
24
|
+
})[];
|
|
25
|
+
command: string[];
|
|
26
|
+
}
|
|
14
27
|
export interface AppConfigResult {
|
|
15
28
|
rootLib?: string;
|
|
16
29
|
libs: string[];
|
|
17
30
|
backend: {
|
|
18
|
-
|
|
31
|
+
docker: DockerConfig;
|
|
19
32
|
explicitDependencies: ExplicitDependencies;
|
|
20
33
|
};
|
|
21
34
|
frontend: {
|
|
22
|
-
|
|
35
|
+
docker: DockerConfig;
|
|
23
36
|
nextConfig: NextConfig | (() => Promise<NextConfig> | NextConfig);
|
|
24
37
|
routes?: {
|
|
25
38
|
basePath?: string;
|