@strapi/strapi 5.42.0 → 5.43.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/dist/cli/commands/admin/active-user.d.ts +15 -0
- package/dist/cli/commands/admin/active-user.d.ts.map +1 -0
- package/dist/cli/commands/admin/block-user.d.ts +15 -0
- package/dist/cli/commands/admin/block-user.d.ts.map +1 -0
- package/dist/cli/commands/admin/delete-user.d.ts +14 -0
- package/dist/cli/commands/admin/delete-user.d.ts.map +1 -0
- package/dist/cli/commands/admin/list-users.d.ts +11 -0
- package/dist/cli/commands/admin/list-users.d.ts.map +1 -0
- package/dist/cli/commands/export/action.d.ts.map +1 -1
- package/dist/cli/commands/import/action.d.ts.map +1 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/transfer/action.d.ts +1 -0
- package/dist/cli/commands/transfer/action.d.ts.map +1 -1
- package/dist/cli/commands/transfer/command.d.ts.map +1 -1
- package/dist/cli/utils/data-transfer.d.ts +6 -4
- package/dist/cli/utils/data-transfer.d.ts.map +1 -1
- package/dist/cli/utils/helpers.d.ts +15 -1
- package/dist/cli/utils/helpers.d.ts.map +1 -1
- package/dist/node/build.d.ts.map +1 -1
- package/dist/node/develop.d.ts.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/cli/commands/admin/active-user.js +73 -0
- package/dist/src/cli/commands/admin/active-user.js.map +1 -0
- package/dist/src/cli/commands/admin/active-user.mjs +70 -0
- package/dist/src/cli/commands/admin/active-user.mjs.map +1 -0
- package/dist/src/cli/commands/admin/block-user.js +73 -0
- package/dist/src/cli/commands/admin/block-user.js.map +1 -0
- package/dist/src/cli/commands/admin/block-user.mjs +70 -0
- package/dist/src/cli/commands/admin/block-user.mjs.map +1 -0
- package/dist/src/cli/commands/admin/delete-user.js +88 -0
- package/dist/src/cli/commands/admin/delete-user.js.map +1 -0
- package/dist/src/cli/commands/admin/delete-user.mjs +85 -0
- package/dist/src/cli/commands/admin/delete-user.mjs.map +1 -0
- package/dist/src/cli/commands/admin/list-users.js +62 -0
- package/dist/src/cli/commands/admin/list-users.js.map +1 -0
- package/dist/src/cli/commands/admin/list-users.mjs +59 -0
- package/dist/src/cli/commands/admin/list-users.mjs.map +1 -0
- package/dist/src/cli/commands/export/action.js +2 -2
- package/dist/src/cli/commands/export/action.js.map +1 -1
- package/dist/src/cli/commands/export/action.mjs +3 -3
- package/dist/src/cli/commands/export/action.mjs.map +1 -1
- package/dist/src/cli/commands/import/action.js +3 -3
- package/dist/src/cli/commands/import/action.js.map +1 -1
- package/dist/src/cli/commands/import/action.mjs +4 -4
- package/dist/src/cli/commands/import/action.mjs.map +1 -1
- package/dist/src/cli/commands/index.js +8 -0
- package/dist/src/cli/commands/index.js.map +1 -1
- package/dist/src/cli/commands/index.mjs +34 -26
- package/dist/src/cli/commands/index.mjs.map +1 -1
- package/dist/src/cli/commands/transfer/action.js +105 -6
- package/dist/src/cli/commands/transfer/action.js.map +1 -1
- package/dist/src/cli/commands/transfer/action.mjs +107 -8
- package/dist/src/cli/commands/transfer/action.mjs.map +1 -1
- package/dist/src/cli/commands/transfer/command.js +1 -1
- package/dist/src/cli/commands/transfer/command.js.map +1 -1
- package/dist/src/cli/commands/transfer/command.mjs +1 -1
- package/dist/src/cli/commands/transfer/command.mjs.map +1 -1
- package/dist/src/cli/utils/commander.js.map +1 -1
- package/dist/src/cli/utils/commander.mjs.map +1 -1
- package/dist/src/cli/utils/data-transfer.js +69 -21
- package/dist/src/cli/utils/data-transfer.js.map +1 -1
- package/dist/src/cli/utils/data-transfer.mjs +70 -22
- package/dist/src/cli/utils/data-transfer.mjs.map +1 -1
- package/dist/src/cli/utils/helpers.js +36 -1
- package/dist/src/cli/utils/helpers.js.map +1 -1
- package/dist/src/cli/utils/helpers.mjs +34 -2
- package/dist/src/cli/utils/helpers.mjs.map +1 -1
- package/dist/src/node/build.js +10 -5
- package/dist/src/node/build.js.map +1 -1
- package/dist/src/node/build.mjs +10 -5
- package/dist/src/node/build.mjs.map +1 -1
- package/dist/src/node/develop.js +194 -148
- package/dist/src/node/develop.js.map +1 -1
- package/dist/src/node/develop.mjs +194 -148
- package/dist/src/node/develop.mjs.map +1 -1
- package/dist/src/node/webpack/config.js +2 -2
- package/dist/src/node/webpack/config.js.map +1 -1
- package/dist/src/node/webpack/config.mjs +2 -2
- package/dist/src/node/webpack/config.mjs.map +1 -1
- package/package.json +23 -23
|
@@ -60,11 +60,16 @@ const develop = async ({ cwd, polling, logger, tsconfig, watchAdmin, buildAdmin,
|
|
|
60
60
|
logger,
|
|
61
61
|
timer
|
|
62
62
|
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
try {
|
|
64
|
+
await tsUtils.compile(cwd, {
|
|
65
|
+
configOptions: {
|
|
66
|
+
ignoreDiagnostics: true
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
} catch (err) {
|
|
70
|
+
logger.error(`Error during initial TypeScript compilation: ${err.message}`);
|
|
71
|
+
// We don't return here because we want to attempt to start the server even if the initial compilation fails, as it can be fixed while the server is running
|
|
72
|
+
}
|
|
68
73
|
}
|
|
69
74
|
/**
|
|
70
75
|
* IF we're not watching the admin we're going to build it, this makes
|
|
@@ -102,17 +107,23 @@ const develop = async ({ cwd, polling, logger, tsconfig, watchAdmin, buildAdmin,
|
|
|
102
107
|
case 'reload':
|
|
103
108
|
{
|
|
104
109
|
if (tsconfig?.config) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
110
|
+
try {
|
|
111
|
+
// Build without diagnostics in case schemas have changed
|
|
112
|
+
await cleanupDistDirectory({
|
|
113
|
+
tsconfig,
|
|
114
|
+
logger,
|
|
115
|
+
timer
|
|
116
|
+
});
|
|
117
|
+
await tsUtils.compile(cwd, {
|
|
118
|
+
configOptions: {
|
|
119
|
+
ignoreDiagnostics: true
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
} catch (err) {
|
|
123
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
124
|
+
logger.error(`Error during TypeScript compilation on reload: ${message}`);
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
116
127
|
}
|
|
117
128
|
logger.debug('cluster has the reload message, sending the worker kill message');
|
|
118
129
|
worker.send('kill');
|
|
@@ -147,145 +158,180 @@ const develop = async ({ cwd, polling, logger, tsconfig, watchAdmin, buildAdmin,
|
|
|
147
158
|
* as a strapi middleware.
|
|
148
159
|
*/ let bundleWatcher;
|
|
149
160
|
const strapiInstance = await strapi.load();
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
options
|
|
160
|
-
});
|
|
161
|
-
const contextDuration = timer.end('createBuildContext');
|
|
162
|
-
contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;
|
|
163
|
-
contextSpinner.succeed();
|
|
164
|
-
timer.start('creatingAdmin');
|
|
165
|
-
const adminSpinner = logger.spinner(`Creating admin`).start();
|
|
166
|
-
await writeStaticClientFiles(ctx);
|
|
167
|
-
if (ctx.bundler === 'webpack') {
|
|
168
|
-
const { watch: watchWebpack } = await import('./webpack/watch.mjs');
|
|
169
|
-
bundleWatcher = await watchWebpack(ctx);
|
|
170
|
-
} else if (ctx.bundler === 'vite') {
|
|
171
|
-
const { watch: watchVite } = await import('./vite/watch.mjs');
|
|
172
|
-
bundleWatcher = await watchVite(ctx);
|
|
161
|
+
const contextSpinner = logger.spinner(`Building build context`);
|
|
162
|
+
const adminSpinner = logger.spinner(`Creating admin`);
|
|
163
|
+
const generatingTsSpinner = logger.spinner(`Generating types`);
|
|
164
|
+
const compilingTsSpinner = logger.spinner(`Compiling TS`);
|
|
165
|
+
let watcherStarted = false;
|
|
166
|
+
const ensureWatcher = ()=>{
|
|
167
|
+
if (!watcherStarted) {
|
|
168
|
+
watcherStarted = true;
|
|
169
|
+
startWatcher(strapiInstance, cwd, polling ?? false, logger, bundleWatcher);
|
|
173
170
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
});
|
|
199
|
-
const generatingDuration = timer.end('generatingTS');
|
|
200
|
-
generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;
|
|
201
|
-
generatingTsSpinner.succeed();
|
|
202
|
-
}
|
|
203
|
-
if (tsconfig?.config) {
|
|
204
|
-
timer.start('compilingTS');
|
|
205
|
-
const compilingTsSpinner = logger.spinner(`Compiling TS`).start();
|
|
206
|
-
await cleanupDistDirectory({
|
|
207
|
-
tsconfig,
|
|
208
|
-
logger,
|
|
209
|
-
timer
|
|
210
|
-
});
|
|
211
|
-
await tsUtils.compile(cwd, {
|
|
212
|
-
configOptions: {
|
|
213
|
-
ignoreDiagnostics: false
|
|
171
|
+
};
|
|
172
|
+
try {
|
|
173
|
+
if (watchAdmin) {
|
|
174
|
+
timer.start('createBuildContext');
|
|
175
|
+
contextSpinner.start();
|
|
176
|
+
const ctx = await createBuildContext({
|
|
177
|
+
cwd,
|
|
178
|
+
logger,
|
|
179
|
+
strapi,
|
|
180
|
+
tsconfig,
|
|
181
|
+
options
|
|
182
|
+
});
|
|
183
|
+
const contextDuration = timer.end('createBuildContext');
|
|
184
|
+
contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;
|
|
185
|
+
contextSpinner.succeed();
|
|
186
|
+
timer.start('creatingAdmin');
|
|
187
|
+
adminSpinner.start();
|
|
188
|
+
await writeStaticClientFiles(ctx);
|
|
189
|
+
if (ctx.bundler === 'webpack') {
|
|
190
|
+
const { watch: watchWebpack } = await import('./webpack/watch.mjs');
|
|
191
|
+
bundleWatcher = await watchWebpack(ctx);
|
|
192
|
+
} else if (ctx.bundler === 'vite') {
|
|
193
|
+
const { watch: watchVite } = await import('./vite/watch.mjs');
|
|
194
|
+
bundleWatcher = await watchVite(ctx);
|
|
214
195
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
compilingTsSpinner.succeed();
|
|
219
|
-
}
|
|
220
|
-
const restart = async ()=>{
|
|
221
|
-
if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {
|
|
222
|
-
strapiInstance.reload.isReloading = true;
|
|
223
|
-
strapiInstance.reload();
|
|
196
|
+
const adminDuration = timer.end('creatingAdmin');
|
|
197
|
+
adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;
|
|
198
|
+
adminSpinner.succeed();
|
|
224
199
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
'**/logs',
|
|
245
|
-
'**/logs/**',
|
|
246
|
-
'**/*.log',
|
|
247
|
-
'**/index.html',
|
|
248
|
-
'**/public',
|
|
249
|
-
'**/public/**',
|
|
250
|
-
strapiInstance.dirs.static.public,
|
|
251
|
-
strings.joinBy('/', strapiInstance.dirs.static.public, '**'),
|
|
252
|
-
'**/*.db*',
|
|
253
|
-
'**/exports/**',
|
|
254
|
-
'**/dist/**',
|
|
255
|
-
'**/*.d.ts',
|
|
256
|
-
'**/.yalc/**',
|
|
257
|
-
'**/yalc.lock',
|
|
258
|
-
// TODO v6: watch only src folder by default, and flip this to watchIncludeFiles
|
|
259
|
-
...strapiInstance.config.get('admin.watchIgnoreFiles', [])
|
|
260
|
-
]
|
|
261
|
-
}).on('add', (path)=>{
|
|
262
|
-
strapiInstance.log.info(`File created: ${path}`);
|
|
263
|
-
restart();
|
|
264
|
-
}).on('change', (path)=>{
|
|
265
|
-
strapiInstance.log.info(`File changed: ${path}`);
|
|
266
|
-
restart();
|
|
267
|
-
}).on('unlink', (path)=>{
|
|
268
|
-
strapiInstance.log.info(`File deleted: ${path}`);
|
|
269
|
-
restart();
|
|
270
|
-
});
|
|
271
|
-
process.on('message', async (message)=>{
|
|
272
|
-
switch(message){
|
|
273
|
-
case 'kill':
|
|
274
|
-
{
|
|
275
|
-
logger.debug('child process has the kill message, destroying the strapi instance and sending the killed process message');
|
|
276
|
-
await watcher.close();
|
|
277
|
-
await strapiInstance.destroy();
|
|
278
|
-
if (bundleWatcher) {
|
|
279
|
-
bundleWatcher.close();
|
|
280
|
-
}
|
|
281
|
-
process.send?.('killed');
|
|
282
|
-
break;
|
|
200
|
+
const loadStrapiDuration = timer.end('loadStrapi');
|
|
201
|
+
loadStrapiSpinner.text = `Loading Strapi (${prettyTime(loadStrapiDuration)})`;
|
|
202
|
+
loadStrapiSpinner.succeed();
|
|
203
|
+
// For TS projects, type generation is a requirement for the develop command so that the server can restart
|
|
204
|
+
// For JS projects, we respect the experimental autogenerate setting
|
|
205
|
+
if (tsconfig?.config || strapi.config.get('typescript.autogenerate') !== false) {
|
|
206
|
+
timer.start('generatingTS');
|
|
207
|
+
generatingTsSpinner.start();
|
|
208
|
+
await tsUtils.generators.generate({
|
|
209
|
+
strapi: strapiInstance,
|
|
210
|
+
pwd: cwd,
|
|
211
|
+
rootDir: undefined,
|
|
212
|
+
logger: {
|
|
213
|
+
silent: true,
|
|
214
|
+
debug: false
|
|
215
|
+
},
|
|
216
|
+
artifacts: {
|
|
217
|
+
contentTypes: true,
|
|
218
|
+
components: true
|
|
283
219
|
}
|
|
220
|
+
});
|
|
221
|
+
const generatingDuration = timer.end('generatingTS');
|
|
222
|
+
generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;
|
|
223
|
+
generatingTsSpinner.succeed();
|
|
284
224
|
}
|
|
285
|
-
|
|
286
|
-
|
|
225
|
+
if (tsconfig?.config) {
|
|
226
|
+
timer.start('compilingTS');
|
|
227
|
+
compilingTsSpinner.start();
|
|
228
|
+
await cleanupDistDirectory({
|
|
229
|
+
tsconfig,
|
|
230
|
+
logger,
|
|
231
|
+
timer
|
|
232
|
+
});
|
|
233
|
+
await tsUtils.compile(cwd, {
|
|
234
|
+
configOptions: {
|
|
235
|
+
ignoreDiagnostics: false
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
const compilingDuration = timer.end('compilingTS');
|
|
239
|
+
compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;
|
|
240
|
+
compilingTsSpinner.succeed();
|
|
241
|
+
}
|
|
242
|
+
ensureWatcher();
|
|
243
|
+
strapiInstance.start();
|
|
244
|
+
} catch (err) {
|
|
245
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
246
|
+
logger.error(`Error during development: ${message}`);
|
|
247
|
+
if (loadStrapiSpinner.isSpinning) {
|
|
248
|
+
loadStrapiSpinner.fail();
|
|
249
|
+
}
|
|
250
|
+
// Fail any spinners that were left running.
|
|
251
|
+
if (contextSpinner.isSpinning) {
|
|
252
|
+
contextSpinner.fail();
|
|
253
|
+
}
|
|
254
|
+
if (compilingTsSpinner.isSpinning) {
|
|
255
|
+
compilingTsSpinner.fail();
|
|
256
|
+
}
|
|
257
|
+
if (adminSpinner.isSpinning) {
|
|
258
|
+
adminSpinner.fail();
|
|
259
|
+
}
|
|
260
|
+
if (generatingTsSpinner.isSpinning) {
|
|
261
|
+
generatingTsSpinner.fail();
|
|
262
|
+
}
|
|
263
|
+
ensureWatcher();
|
|
264
|
+
}
|
|
287
265
|
}
|
|
288
266
|
};
|
|
267
|
+
function startWatcher(strapiInstance, cwd, polling, logger, bundleWatcher) {
|
|
268
|
+
const restart = async ()=>{
|
|
269
|
+
if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {
|
|
270
|
+
strapiInstance.reload.isReloading = true;
|
|
271
|
+
strapiInstance.reload();
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
const watcher = chokidar.watch(cwd, {
|
|
275
|
+
ignoreInitial: true,
|
|
276
|
+
usePolling: polling,
|
|
277
|
+
ignored: [
|
|
278
|
+
/(^|[/\\])\../,
|
|
279
|
+
/tmp/,
|
|
280
|
+
'**/src/admin/**',
|
|
281
|
+
'**/src/plugins/**/admin/**',
|
|
282
|
+
'**/dist/src/plugins/test/admin/**',
|
|
283
|
+
'**/documentation',
|
|
284
|
+
'**/documentation/**',
|
|
285
|
+
'**/node_modules',
|
|
286
|
+
'**/node_modules/**',
|
|
287
|
+
'**/plugins.json',
|
|
288
|
+
'**/build',
|
|
289
|
+
'**/build/**',
|
|
290
|
+
'**/log',
|
|
291
|
+
'**/log/**',
|
|
292
|
+
'**/logs',
|
|
293
|
+
'**/logs/**',
|
|
294
|
+
'**/*.log',
|
|
295
|
+
'**/index.html',
|
|
296
|
+
'**/public',
|
|
297
|
+
'**/public/**',
|
|
298
|
+
strapiInstance.dirs.static.public,
|
|
299
|
+
strings.joinBy('/', strapiInstance.dirs.static.public, '**'),
|
|
300
|
+
'**/*.db*',
|
|
301
|
+
'**/exports/**',
|
|
302
|
+
'**/dist/**',
|
|
303
|
+
'**/*.d.ts',
|
|
304
|
+
'**/.yalc/**',
|
|
305
|
+
'**/yalc.lock',
|
|
306
|
+
// TODO v6: watch only src folder by default, and flip this to watchIncludeFiles
|
|
307
|
+
...strapiInstance.config.get('admin.watchIgnoreFiles', [])
|
|
308
|
+
]
|
|
309
|
+
}).on('add', (path)=>{
|
|
310
|
+
strapiInstance.log.info(`File created: ${path}`);
|
|
311
|
+
restart();
|
|
312
|
+
}).on('change', (path)=>{
|
|
313
|
+
strapiInstance.log.info(`File changed: ${path}`);
|
|
314
|
+
restart();
|
|
315
|
+
}).on('unlink', (path)=>{
|
|
316
|
+
strapiInstance.log.info(`File deleted: ${path}`);
|
|
317
|
+
restart();
|
|
318
|
+
});
|
|
319
|
+
process.on('message', async (message)=>{
|
|
320
|
+
switch(message){
|
|
321
|
+
case 'kill':
|
|
322
|
+
{
|
|
323
|
+
logger.debug('child process has the kill message, destroying the strapi instance and sending the killed process message');
|
|
324
|
+
await watcher.close();
|
|
325
|
+
await strapiInstance.destroy();
|
|
326
|
+
if (bundleWatcher) {
|
|
327
|
+
bundleWatcher.close();
|
|
328
|
+
}
|
|
329
|
+
process.send?.('killed');
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
}
|
|
289
335
|
|
|
290
336
|
export { develop };
|
|
291
337
|
//# sourceMappingURL=develop.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"develop.mjs","sources":["../../../src/node/develop.ts"],"sourcesContent":["import * as tsUtils from '@strapi/typescript-utils';\nimport { strings } from '@strapi/utils';\nimport chokidar from 'chokidar';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport cluster from 'node:cluster';\nimport { createStrapi } from '@strapi/core';\n\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime, type TimeMeasurer } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport type { WebpackWatcher } from './webpack/watch';\nimport type { ViteWatcher } from './vite/watch';\n\nimport { writeStaticClientFiles } from './staticFiles';\n\ninterface DevelopOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n polling?: boolean;\n open?: boolean;\n watchAdmin?: boolean;\n buildAdmin?: boolean;\n}\n\n// This method removes all non-admin build files from the dist directory\nconst cleanupDistDirectory = async ({\n tsconfig,\n logger,\n timer,\n}: Pick<DevelopOptions, 'tsconfig' | 'logger'> & { timer: TimeMeasurer }) => {\n const distDir = tsconfig?.config?.options?.outDir;\n\n if (\n !distDir || // we don't have a dist dir\n (await fs\n .access(distDir)\n .then(() => false)\n .catch(() => true)) // it doesn't exist -- if it does but no access, that will be caught later\n ) {\n return;\n }\n\n const timerName = `cleaningDist${Date.now()}`;\n timer.start(timerName);\n const cleaningSpinner = logger.spinner(`Cleaning dist dir ${distDir}`).start();\n\n try {\n const dirContent = await fs.readdir(distDir);\n const validFilenames = dirContent\n // Ignore the admin build folder\n .filter((filename) => filename !== 'build');\n for (const filename of validFilenames) {\n await fs.rm(path.resolve(distDir, filename), { recursive: true });\n }\n } catch (err: unknown) {\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Error cleaning dist dir: ${err} (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.fail();\n return;\n }\n\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Cleaning dist dir (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.succeed();\n};\n\nconst develop = async ({\n cwd,\n polling,\n logger,\n tsconfig,\n watchAdmin,\n buildAdmin,\n ...options\n}: DevelopOptions) => {\n const timer = getTimer();\n\n if (cluster.isPrimary) {\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n\n /**\n * IF we're not watching the admin we're going to build it, this makes\n * sure that at least the admin is built for users & they can interact\n * with the application.\n */\n if (!watchAdmin && buildAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n cluster.on('message', async (worker, message) => {\n switch (message) {\n case 'reload': {\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n }\n logger.debug('cluster has the reload message, sending the worker kill message');\n worker.send('kill');\n break;\n }\n case 'killed': {\n logger.debug('cluster has the killed message, forking the cluster');\n cluster.fork();\n break;\n }\n case 'stop': {\n process.exit(1);\n break;\n }\n default:\n break;\n }\n });\n\n cluster.fork();\n }\n\n if (cluster.isWorker) {\n timer.start('loadStrapi');\n const loadStrapiSpinner = logger.spinner(`Loading Strapi`).start();\n\n const strapi = createStrapi({\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n autoReload: true,\n serveAdminPanel: !watchAdmin,\n });\n\n /**\n * If we're watching the admin panel then we're going to attach the watcher\n * as a strapi middleware.\n */\n let bundleWatcher: WebpackWatcher | ViteWatcher | undefined;\n\n const strapiInstance = await strapi.load();\n\n if (watchAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n strapi,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { watch: watchWebpack } = await import('./webpack/watch');\n bundleWatcher = await watchWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { watch: watchVite } = await import('./vite/watch');\n bundleWatcher = await watchVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n const loadStrapiDuration = timer.end('loadStrapi');\n loadStrapiSpinner.text = `Loading Strapi (${prettyTime(loadStrapiDuration)})`;\n loadStrapiSpinner.succeed();\n\n // For TS projects, type generation is a requirement for the develop command so that the server can restart\n // For JS projects, we respect the experimental autogenerate setting\n if (tsconfig?.config || strapi.config.get('typescript.autogenerate') !== false) {\n timer.start('generatingTS');\n const generatingTsSpinner = logger.spinner(`Generating types`).start();\n\n await tsUtils.generators.generate({\n strapi: strapiInstance,\n pwd: cwd,\n rootDir: undefined,\n logger: { silent: true, debug: false },\n artifacts: { contentTypes: true, components: true },\n });\n\n const generatingDuration = timer.end('generatingTS');\n generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;\n generatingTsSpinner.succeed();\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n const compilingTsSpinner = logger.spinner(`Compiling TS`).start();\n\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n const restart = async () => {\n if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {\n strapiInstance.reload.isReloading = true;\n strapiInstance.reload();\n }\n };\n\n const watcher = chokidar\n .watch(cwd, {\n ignoreInitial: true,\n usePolling: polling,\n ignored: [\n /(^|[/\\\\])\\../, // dot files\n /tmp/,\n '**/src/admin/**',\n '**/src/plugins/**/admin/**',\n '**/dist/src/plugins/test/admin/**',\n '**/documentation',\n '**/documentation/**',\n '**/node_modules',\n '**/node_modules/**',\n '**/plugins.json',\n '**/build',\n '**/build/**',\n '**/log',\n '**/log/**',\n '**/logs',\n '**/logs/**',\n '**/*.log',\n '**/index.html',\n '**/public',\n '**/public/**',\n strapiInstance.dirs.static.public,\n strings.joinBy('/', strapiInstance.dirs.static.public, '**'),\n '**/*.db*',\n '**/exports/**',\n '**/dist/**',\n '**/*.d.ts',\n '**/.yalc/**',\n '**/yalc.lock',\n // TODO v6: watch only src folder by default, and flip this to watchIncludeFiles\n ...strapiInstance.config.get('admin.watchIgnoreFiles', []),\n ],\n })\n .on('add', (path) => {\n strapiInstance.log.info(`File created: ${path}`);\n restart();\n })\n .on('change', (path) => {\n strapiInstance.log.info(`File changed: ${path}`);\n restart();\n })\n .on('unlink', (path) => {\n strapiInstance.log.info(`File deleted: ${path}`);\n restart();\n });\n\n process.on('message', async (message) => {\n switch (message) {\n case 'kill': {\n logger.debug(\n 'child process has the kill message, destroying the strapi instance and sending the killed process message'\n );\n await watcher.close();\n\n await strapiInstance.destroy();\n\n if (bundleWatcher) {\n bundleWatcher.close();\n }\n process.send?.('killed');\n break;\n }\n default:\n break;\n }\n });\n\n strapiInstance.start();\n }\n};\n\nexport { develop };\nexport type { DevelopOptions };\n"],"names":["cleanupDistDirectory","tsconfig","logger","timer","distDir","config","options","outDir","fs","access","then","catch","timerName","Date","now","start","cleaningSpinner","spinner","dirContent","readdir","validFilenames","filter","filename","rm","path","resolve","recursive","err","generatingDuration","end","text","prettyTime","fail","succeed","develop","cwd","polling","watchAdmin","buildAdmin","getTimer","cluster","isPrimary","didInstall","checkRequiredDependencies","error","message","process","exit","tsUtils","compile","configOptions","ignoreDiagnostics","contextSpinner","console","log","ctx","createBuildContext","contextDuration","adminSpinner","writeStaticClientFiles","bundler","build","buildWebpack","buildVite","adminDuration","on","worker","debug","send","fork","isWorker","loadStrapiSpinner","strapi","createStrapi","appDir","autoReload","serveAdminPanel","bundleWatcher","strapiInstance","load","watch","watchWebpack","watchVite","loadStrapiDuration","get","generatingTsSpinner","generators","generate","pwd","rootDir","undefined","silent","artifacts","contentTypes","components","compilingTsSpinner","compilingDuration","restart","reload","isWatching","isReloading","watcher","chokidar","ignoreInitial","usePolling","ignored","dirs","static","public","strings","joinBy","info","close","destroy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"develop.mjs","sources":["../../../src/node/develop.ts"],"sourcesContent":["import * as tsUtils from '@strapi/typescript-utils';\nimport { strings } from '@strapi/utils';\nimport chokidar from 'chokidar';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport cluster from 'node:cluster';\nimport { createStrapi } from '@strapi/core';\n\nimport type { CLIContext } from '../cli/types';\nimport { checkRequiredDependencies } from './core/dependencies';\nimport { getTimer, prettyTime, type TimeMeasurer } from './core/timer';\nimport { createBuildContext } from './create-build-context';\nimport type { WebpackWatcher } from './webpack/watch';\nimport type { ViteWatcher } from './vite/watch';\n\nimport { writeStaticClientFiles } from './staticFiles';\nimport { Logger } from '../cli/utils/logger';\n\ninterface DevelopOptions extends CLIContext {\n /**\n * Which bundler to use for building.\n *\n * @default webpack\n */\n bundler?: 'webpack' | 'vite';\n polling?: boolean;\n open?: boolean;\n watchAdmin?: boolean;\n buildAdmin?: boolean;\n}\n\n// This method removes all non-admin build files from the dist directory\nconst cleanupDistDirectory = async ({\n tsconfig,\n logger,\n timer,\n}: Pick<DevelopOptions, 'tsconfig' | 'logger'> & { timer: TimeMeasurer }) => {\n const distDir = tsconfig?.config?.options?.outDir;\n\n if (\n !distDir || // we don't have a dist dir\n (await fs\n .access(distDir)\n .then(() => false)\n .catch(() => true)) // it doesn't exist -- if it does but no access, that will be caught later\n ) {\n return;\n }\n\n const timerName = `cleaningDist${Date.now()}`;\n timer.start(timerName);\n const cleaningSpinner = logger.spinner(`Cleaning dist dir ${distDir}`).start();\n\n try {\n const dirContent = await fs.readdir(distDir);\n const validFilenames = dirContent\n // Ignore the admin build folder\n .filter((filename) => filename !== 'build');\n for (const filename of validFilenames) {\n await fs.rm(path.resolve(distDir, filename), { recursive: true });\n }\n } catch (err: unknown) {\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Error cleaning dist dir: ${err} (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.fail();\n return;\n }\n\n const generatingDuration = timer.end(timerName);\n cleaningSpinner.text = `Cleaning dist dir (${prettyTime(generatingDuration)})`;\n cleaningSpinner?.succeed();\n};\n\nconst develop = async ({\n cwd,\n polling,\n logger,\n tsconfig,\n watchAdmin,\n buildAdmin,\n ...options\n}: DevelopOptions) => {\n const timer = getTimer();\n\n if (cluster.isPrimary) {\n const { didInstall } = await checkRequiredDependencies({ cwd, logger }).catch((err) => {\n logger.error(err.message);\n process.exit(1);\n });\n\n if (didInstall) {\n return;\n }\n\n if (tsconfig?.config) {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n try {\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n } catch (err: unknown) {\n logger.error(`Error during initial TypeScript compilation: ${(err as Error).message}`);\n // We don't return here because we want to attempt to start the server even if the initial compilation fails, as it can be fixed while the server is running\n }\n }\n\n /**\n * IF we're not watching the admin we're going to build it, this makes\n * sure that at least the admin is built for users & they can interact\n * with the application.\n */\n if (!watchAdmin && buildAdmin) {\n timer.start('createBuildContext');\n const contextSpinner = logger.spinner(`Building build context`).start();\n console.log('');\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n const adminSpinner = logger.spinner(`Creating admin`).start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { build: buildWebpack } = await import('./webpack/build');\n await buildWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { build: buildVite } = await import('./vite/build');\n await buildVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n cluster.on('message', async (worker, message) => {\n switch (message) {\n case 'reload': {\n if (tsconfig?.config) {\n try {\n // Build without diagnostics in case schemas have changed\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: true } });\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n logger.error(`Error during TypeScript compilation on reload: ${message}`);\n process.exit(1);\n }\n }\n logger.debug('cluster has the reload message, sending the worker kill message');\n worker.send('kill');\n break;\n }\n case 'killed': {\n logger.debug('cluster has the killed message, forking the cluster');\n cluster.fork();\n break;\n }\n case 'stop': {\n process.exit(1);\n break;\n }\n default:\n break;\n }\n });\n\n cluster.fork();\n }\n\n if (cluster.isWorker) {\n timer.start('loadStrapi');\n const loadStrapiSpinner = logger.spinner(`Loading Strapi`).start();\n\n const strapi = createStrapi({\n appDir: cwd,\n distDir: tsconfig?.config.options.outDir ?? '',\n autoReload: true,\n serveAdminPanel: !watchAdmin,\n });\n\n /**\n * If we're watching the admin panel then we're going to attach the watcher\n * as a strapi middleware.\n */\n let bundleWatcher: WebpackWatcher | ViteWatcher | undefined;\n\n const strapiInstance = await strapi.load();\n\n const contextSpinner = logger.spinner(`Building build context`);\n const adminSpinner = logger.spinner(`Creating admin`);\n const generatingTsSpinner = logger.spinner(`Generating types`);\n const compilingTsSpinner = logger.spinner(`Compiling TS`);\n\n let watcherStarted = false;\n const ensureWatcher = () => {\n if (!watcherStarted) {\n watcherStarted = true;\n startWatcher(strapiInstance, cwd, polling ?? false, logger, bundleWatcher);\n }\n };\n\n try {\n if (watchAdmin) {\n timer.start('createBuildContext');\n contextSpinner.start();\n\n const ctx = await createBuildContext({\n cwd,\n logger,\n strapi,\n tsconfig,\n options,\n });\n const contextDuration = timer.end('createBuildContext');\n contextSpinner.text = `Building build context (${prettyTime(contextDuration)})`;\n contextSpinner.succeed();\n\n timer.start('creatingAdmin');\n adminSpinner.start();\n\n await writeStaticClientFiles(ctx);\n\n if (ctx.bundler === 'webpack') {\n const { watch: watchWebpack } = await import('./webpack/watch');\n bundleWatcher = await watchWebpack(ctx);\n } else if (ctx.bundler === 'vite') {\n const { watch: watchVite } = await import('./vite/watch');\n bundleWatcher = await watchVite(ctx);\n }\n\n const adminDuration = timer.end('creatingAdmin');\n adminSpinner.text = `Creating admin (${prettyTime(adminDuration)})`;\n adminSpinner.succeed();\n }\n\n const loadStrapiDuration = timer.end('loadStrapi');\n loadStrapiSpinner.text = `Loading Strapi (${prettyTime(loadStrapiDuration)})`;\n loadStrapiSpinner.succeed();\n\n // For TS projects, type generation is a requirement for the develop command so that the server can restart\n // For JS projects, we respect the experimental autogenerate setting\n if (tsconfig?.config || strapi.config.get('typescript.autogenerate') !== false) {\n timer.start('generatingTS');\n generatingTsSpinner.start();\n\n await tsUtils.generators.generate({\n strapi: strapiInstance,\n pwd: cwd,\n rootDir: undefined,\n logger: { silent: true, debug: false },\n artifacts: { contentTypes: true, components: true },\n });\n\n const generatingDuration = timer.end('generatingTS');\n generatingTsSpinner.text = `Generating types (${prettyTime(generatingDuration)})`;\n generatingTsSpinner.succeed();\n }\n\n if (tsconfig?.config) {\n timer.start('compilingTS');\n compilingTsSpinner.start();\n\n await cleanupDistDirectory({ tsconfig, logger, timer });\n await tsUtils.compile(cwd, { configOptions: { ignoreDiagnostics: false } });\n\n const compilingDuration = timer.end('compilingTS');\n compilingTsSpinner.text = `Compiling TS (${prettyTime(compilingDuration)})`;\n compilingTsSpinner.succeed();\n }\n\n ensureWatcher();\n\n strapiInstance.start();\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n logger.error(`Error during development: ${message}`);\n\n if (loadStrapiSpinner.isSpinning) {\n loadStrapiSpinner.fail();\n }\n // Fail any spinners that were left running.\n if (contextSpinner.isSpinning) {\n contextSpinner.fail();\n }\n if (compilingTsSpinner.isSpinning) {\n compilingTsSpinner.fail();\n }\n if (adminSpinner.isSpinning) {\n adminSpinner.fail();\n }\n if (generatingTsSpinner.isSpinning) {\n generatingTsSpinner.fail();\n }\n\n ensureWatcher();\n }\n }\n};\n\nfunction startWatcher(\n strapiInstance: Awaited<ReturnType<typeof createStrapi>>,\n cwd: string,\n polling: boolean,\n logger: Logger,\n bundleWatcher?: WebpackWatcher | ViteWatcher\n) {\n const restart = async () => {\n if (strapiInstance.reload.isWatching && !strapiInstance.reload.isReloading) {\n strapiInstance.reload.isReloading = true;\n strapiInstance.reload();\n }\n };\n\n const watcher = chokidar\n .watch(cwd, {\n ignoreInitial: true,\n usePolling: polling,\n ignored: [\n /(^|[/\\\\])\\../, // dot files\n /tmp/,\n '**/src/admin/**',\n '**/src/plugins/**/admin/**',\n '**/dist/src/plugins/test/admin/**',\n '**/documentation',\n '**/documentation/**',\n '**/node_modules',\n '**/node_modules/**',\n '**/plugins.json',\n '**/build',\n '**/build/**',\n '**/log',\n '**/log/**',\n '**/logs',\n '**/logs/**',\n '**/*.log',\n '**/index.html',\n '**/public',\n '**/public/**',\n strapiInstance.dirs.static.public,\n strings.joinBy('/', strapiInstance.dirs.static.public, '**'),\n '**/*.db*',\n '**/exports/**',\n '**/dist/**',\n '**/*.d.ts',\n '**/.yalc/**',\n '**/yalc.lock',\n // TODO v6: watch only src folder by default, and flip this to watchIncludeFiles\n ...strapiInstance.config.get('admin.watchIgnoreFiles', []),\n ],\n })\n .on('add', (path) => {\n strapiInstance.log.info(`File created: ${path}`);\n restart();\n })\n .on('change', (path) => {\n strapiInstance.log.info(`File changed: ${path}`);\n restart();\n })\n .on('unlink', (path) => {\n strapiInstance.log.info(`File deleted: ${path}`);\n restart();\n });\n\n process.on('message', async (message) => {\n switch (message) {\n case 'kill': {\n logger.debug(\n 'child process has the kill message, destroying the strapi instance and sending the killed process message'\n );\n await watcher.close();\n\n await strapiInstance.destroy();\n\n if (bundleWatcher) {\n bundleWatcher.close();\n }\n process.send?.('killed');\n break;\n }\n default:\n break;\n }\n });\n}\n\nexport { develop };\nexport type { DevelopOptions };\n"],"names":["cleanupDistDirectory","tsconfig","logger","timer","distDir","config","options","outDir","fs","access","then","catch","timerName","Date","now","start","cleaningSpinner","spinner","dirContent","readdir","validFilenames","filter","filename","rm","path","resolve","recursive","err","generatingDuration","end","text","prettyTime","fail","succeed","develop","cwd","polling","watchAdmin","buildAdmin","getTimer","cluster","isPrimary","didInstall","checkRequiredDependencies","error","message","process","exit","tsUtils","compile","configOptions","ignoreDiagnostics","contextSpinner","console","log","ctx","createBuildContext","contextDuration","adminSpinner","writeStaticClientFiles","bundler","build","buildWebpack","buildVite","adminDuration","on","worker","Error","String","debug","send","fork","isWorker","loadStrapiSpinner","strapi","createStrapi","appDir","autoReload","serveAdminPanel","bundleWatcher","strapiInstance","load","generatingTsSpinner","compilingTsSpinner","watcherStarted","ensureWatcher","startWatcher","watch","watchWebpack","watchVite","loadStrapiDuration","get","generators","generate","pwd","rootDir","undefined","silent","artifacts","contentTypes","components","compilingDuration","isSpinning","restart","reload","isWatching","isReloading","watcher","chokidar","ignoreInitial","usePolling","ignored","dirs","static","public","strings","joinBy","info","close","destroy"],"mappings":"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"}
|
|
@@ -176,7 +176,7 @@ const resolveDevelopmentConfig = async (ctx)=>{
|
|
|
176
176
|
output: {
|
|
177
177
|
filename: '[name].js',
|
|
178
178
|
path: ctx.distPath,
|
|
179
|
-
publicPath: ctx.basePath
|
|
179
|
+
publicPath: `${ctx.basePath.replace(/\/$/, '')}/`
|
|
180
180
|
},
|
|
181
181
|
infrastructureLogging: {
|
|
182
182
|
level: 'error'
|
|
@@ -199,7 +199,7 @@ const resolveProductionConfig = async (ctx)=>{
|
|
|
199
199
|
devtool: ctx.options.sourcemaps ? 'source-map' : false,
|
|
200
200
|
output: {
|
|
201
201
|
path: ctx.distPath,
|
|
202
|
-
publicPath: ctx.basePath
|
|
202
|
+
publicPath: `${ctx.basePath.replace(/\/$/, '')}/`,
|
|
203
203
|
// Utilize long-term caching by adding content hashes (not compilation hashes)
|
|
204
204
|
// to compiled assets for production
|
|
205
205
|
filename: '[name].[contenthash:8].js',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../../src/node/webpack/config.ts"],"sourcesContent":["import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';\nimport browserslistToEsbuild from 'browserslist-to-esbuild';\nimport { EsbuildPlugin } from 'esbuild-loader';\nimport ForkTsCheckerPlugin from 'fork-ts-checker-webpack-plugin';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport crypto from 'node:crypto';\nimport path from 'node:path';\nimport {\n Configuration,\n DefinePlugin,\n HotModuleReplacementPlugin,\n WebpackPluginInstance,\n} from 'webpack';\nimport { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';\n\nimport { loadStrapiMonorepo } from '../core/monorepo';\nimport type { BuildContext } from '../create-build-context';\nimport { getUserConfig } from '../core/config';\nimport { getLinkedDesignSystemPath } from '../core/linked-packages';\nimport { getMonorepoAliases } from '../core/aliases';\nimport { getModulePath } from '../core/resolve-module';\n\nconst resolveBaseConfig = async (ctx: BuildContext) => {\n const target = browserslistToEsbuild(ctx.target);\n\n return {\n experiments: {\n topLevelAwait: true,\n },\n entry: {\n main: [`./${ctx.entry}`],\n },\n resolve: {\n alias: {\n react: getModulePath('react'),\n 'react-dom': getModulePath('react-dom'),\n 'styled-components': getModulePath('styled-components'),\n 'react-router-dom': getModulePath('react-router-dom'),\n // Force single instance so plugin custom field chunks inherit root DesignSystemProvider context\n '@strapi/design-system': getModulePath('@strapi/design-system'),\n '@radix-ui/react-tooltip': getModulePath('@radix-ui/react-tooltip'),\n },\n extensions: ['.js', '.jsx', '.react.js', '.ts', '.tsx'],\n },\n module: {\n rules: [\n {\n test: /\\.(ts|tsx)$/,\n loader: require.resolve('esbuild-loader'),\n options: {\n loader: 'tsx',\n target,\n jsx: 'automatic',\n },\n },\n {\n test: /\\.(js|jsx|mjs)$/,\n use: {\n loader: require.resolve('esbuild-loader'),\n options: {\n loader: 'jsx',\n target,\n jsx: 'automatic',\n },\n },\n },\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n {\n test: /\\.css$/i,\n use: [require.resolve('style-loader'), require.resolve('css-loader')],\n },\n {\n test: /\\.(svg|eot|otf|ttf|woff|woff2)$/,\n type: 'asset/resource',\n },\n {\n test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/, /\\.ico$/],\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: 1000,\n },\n },\n },\n {\n test: /\\.(mp4|webm)$/,\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: 10000,\n },\n },\n },\n ],\n },\n plugins: [\n new HtmlWebpackPlugin({\n inject: true,\n template: path.resolve(ctx.runtimeDir, 'index.html'),\n }),\n new DefinePlugin(\n Object.entries(ctx.env).reduce<Record<string, string>>((acc, [key, value]) => {\n acc[`process.env.${key}`] = JSON.stringify(value);\n return acc;\n }, {})\n ),\n ctx.tsconfig &&\n new ForkTsCheckerPlugin({\n typescript: {\n configFile: ctx.tsconfig.path,\n configOverwrite: {\n compilerOptions: {\n sourceMap: ctx.options.sourcemaps,\n },\n },\n },\n }),\n ].filter(Boolean),\n };\n};\n\nconst resolveDevelopmentConfig = async (ctx: BuildContext): Promise<Configuration> => {\n const baseConfig = await resolveBaseConfig(ctx);\n const monorepo = await loadStrapiMonorepo(ctx.cwd);\n const linkedDesignSystemPath = getLinkedDesignSystemPath();\n\n return {\n ...baseConfig,\n cache: {\n type: 'filesystem',\n // version cache when there are changes to aliases\n buildDependencies: {\n config: [__filename],\n // When design-system is linked, invalidate cache when it changes\n ...(linkedDesignSystemPath && {\n designSystem: [path.join(linkedDesignSystemPath, 'dist')],\n }),\n },\n version: crypto\n .createHash('md5')\n .update(Object.entries(baseConfig.resolve.alias ?? {}).join())\n .digest('hex'),\n },\n resolve: {\n ...baseConfig.resolve,\n alias: {\n ...baseConfig.resolve.alias,\n ...getMonorepoAliases({ monorepo }),\n },\n },\n entry: {\n ...baseConfig.entry,\n main: [\n `${require.resolve('webpack-hot-middleware/client')}?path=/__webpack_hmr`,\n ...baseConfig.entry.main,\n ],\n },\n stats: 'errors-warnings',\n mode: 'development',\n devtool: 'inline-source-map',\n output: {\n filename: '[name].js',\n path: ctx.distPath,\n publicPath: ctx.basePath,\n },\n infrastructureLogging: {\n level: 'error',\n },\n plugins: [\n ...baseConfig.plugins,\n new HotModuleReplacementPlugin(),\n new ReactRefreshWebpackPlugin(),\n ],\n };\n};\n\nconst resolveProductionConfig = async (ctx: BuildContext): Promise<Configuration> => {\n const target = browserslistToEsbuild(ctx.target);\n\n const baseConfig = await resolveBaseConfig(ctx);\n\n return {\n ...baseConfig,\n stats: 'errors-only',\n mode: 'production',\n bail: true,\n devtool: ctx.options.sourcemaps ? 'source-map' : false,\n output: {\n path: ctx.distPath,\n publicPath: ctx.basePath,\n // Utilize long-term caching by adding content hashes (not compilation hashes)\n // to compiled assets for production\n filename: '[name].[contenthash:8].js',\n chunkFilename: '[name].[contenthash:8].chunk.js',\n },\n optimization: {\n minimize: ctx.options.minify,\n minimizer: [\n new EsbuildPlugin({\n target,\n css: true, // Apply minification to CSS assets\n }),\n ],\n moduleIds: 'deterministic',\n runtimeChunk: true,\n },\n plugins: [\n ...baseConfig.plugins,\n new MiniCssExtractPlugin({\n filename: '[name].[chunkhash].css',\n chunkFilename: '[name].[chunkhash].chunkhash.css',\n ignoreOrder: true,\n }),\n ctx.options.stats && (new BundleAnalyzerPlugin() as unknown as WebpackPluginInstance), // TODO: find out if this is an actual issue or just a ts bug\n ].filter(Boolean),\n };\n};\n\nconst USER_CONFIGS = ['webpack.config.js', 'webpack.config.mjs', 'webpack.config.ts'];\n\ntype UserWebpackConfig = (config: Configuration, webpack: unknown) => Configuration;\n\nconst mergeConfigWithUserConfig = async (config: Configuration, ctx: BuildContext) => {\n const userConfig = await getUserConfig<UserWebpackConfig>(USER_CONFIGS, ctx);\n\n if (userConfig) {\n if (typeof userConfig === 'function') {\n const webpack = await import('webpack');\n return userConfig(config, webpack);\n }\n\n ctx.logger.warn(\n `You've exported something other than a function from ${path.join(\n ctx.appDir,\n 'src',\n 'admin',\n 'webpack.config'\n )}, this will ignored.`\n );\n }\n\n return config;\n};\n\nexport { mergeConfigWithUserConfig, resolveDevelopmentConfig, resolveProductionConfig };\n"],"names":["resolveBaseConfig","ctx","target","browserslistToEsbuild","experiments","topLevelAwait","entry","main","resolve","alias","react","getModulePath","extensions","module","rules","test","loader","require","options","jsx","use","fullySpecified","type","parser","dataUrlCondition","maxSize","plugins","HtmlWebpackPlugin","inject","template","path","runtimeDir","DefinePlugin","Object","entries","env","reduce","acc","key","value","JSON","stringify","tsconfig","ForkTsCheckerPlugin","typescript","configFile","configOverwrite","compilerOptions","sourceMap","sourcemaps","filter","Boolean","resolveDevelopmentConfig","baseConfig","monorepo","loadStrapiMonorepo","cwd","linkedDesignSystemPath","getLinkedDesignSystemPath","cache","buildDependencies","config","__filename","designSystem","join","version","crypto","createHash","update","digest","getMonorepoAliases","stats","mode","devtool","output","filename","distPath","publicPath","basePath","infrastructureLogging","level","HotModuleReplacementPlugin","ReactRefreshWebpackPlugin","resolveProductionConfig","bail","chunkFilename","optimization","minimize","minify","minimizer","EsbuildPlugin","css","moduleIds","runtimeChunk","MiniCssExtractPlugin","ignoreOrder","BundleAnalyzerPlugin","USER_CONFIGS","mergeConfigWithUserConfig","userConfig","getUserConfig","webpack","logger","warn","appDir"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../../src/node/webpack/config.ts"],"sourcesContent":["import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin';\nimport browserslistToEsbuild from 'browserslist-to-esbuild';\nimport { EsbuildPlugin } from 'esbuild-loader';\nimport ForkTsCheckerPlugin from 'fork-ts-checker-webpack-plugin';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin';\nimport crypto from 'node:crypto';\nimport path from 'node:path';\nimport {\n Configuration,\n DefinePlugin,\n HotModuleReplacementPlugin,\n WebpackPluginInstance,\n} from 'webpack';\nimport { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer';\n\nimport { loadStrapiMonorepo } from '../core/monorepo';\nimport type { BuildContext } from '../create-build-context';\nimport { getUserConfig } from '../core/config';\nimport { getLinkedDesignSystemPath } from '../core/linked-packages';\nimport { getMonorepoAliases } from '../core/aliases';\nimport { getModulePath } from '../core/resolve-module';\n\nconst resolveBaseConfig = async (ctx: BuildContext) => {\n const target = browserslistToEsbuild(ctx.target);\n\n return {\n experiments: {\n topLevelAwait: true,\n },\n entry: {\n main: [`./${ctx.entry}`],\n },\n resolve: {\n alias: {\n react: getModulePath('react'),\n 'react-dom': getModulePath('react-dom'),\n 'styled-components': getModulePath('styled-components'),\n 'react-router-dom': getModulePath('react-router-dom'),\n // Force single instance so plugin custom field chunks inherit root DesignSystemProvider context\n '@strapi/design-system': getModulePath('@strapi/design-system'),\n '@radix-ui/react-tooltip': getModulePath('@radix-ui/react-tooltip'),\n },\n extensions: ['.js', '.jsx', '.react.js', '.ts', '.tsx'],\n },\n module: {\n rules: [\n {\n test: /\\.(ts|tsx)$/,\n loader: require.resolve('esbuild-loader'),\n options: {\n loader: 'tsx',\n target,\n jsx: 'automatic',\n },\n },\n {\n test: /\\.(js|jsx|mjs)$/,\n use: {\n loader: require.resolve('esbuild-loader'),\n options: {\n loader: 'jsx',\n target,\n jsx: 'automatic',\n },\n },\n },\n {\n test: /\\.m?js/,\n resolve: {\n fullySpecified: false,\n },\n },\n {\n test: /\\.css$/i,\n use: [require.resolve('style-loader'), require.resolve('css-loader')],\n },\n {\n test: /\\.(svg|eot|otf|ttf|woff|woff2)$/,\n type: 'asset/resource',\n },\n {\n test: [/\\.bmp$/, /\\.gif$/, /\\.jpe?g$/, /\\.png$/, /\\.ico$/],\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: 1000,\n },\n },\n },\n {\n test: /\\.(mp4|webm)$/,\n type: 'asset',\n parser: {\n dataUrlCondition: {\n maxSize: 10000,\n },\n },\n },\n ],\n },\n plugins: [\n new HtmlWebpackPlugin({\n inject: true,\n template: path.resolve(ctx.runtimeDir, 'index.html'),\n }),\n new DefinePlugin(\n Object.entries(ctx.env).reduce<Record<string, string>>((acc, [key, value]) => {\n acc[`process.env.${key}`] = JSON.stringify(value);\n return acc;\n }, {})\n ),\n ctx.tsconfig &&\n new ForkTsCheckerPlugin({\n typescript: {\n configFile: ctx.tsconfig.path,\n configOverwrite: {\n compilerOptions: {\n sourceMap: ctx.options.sourcemaps,\n },\n },\n },\n }),\n ].filter(Boolean),\n };\n};\n\nconst resolveDevelopmentConfig = async (ctx: BuildContext): Promise<Configuration> => {\n const baseConfig = await resolveBaseConfig(ctx);\n const monorepo = await loadStrapiMonorepo(ctx.cwd);\n const linkedDesignSystemPath = getLinkedDesignSystemPath();\n\n return {\n ...baseConfig,\n cache: {\n type: 'filesystem',\n // version cache when there are changes to aliases\n buildDependencies: {\n config: [__filename],\n // When design-system is linked, invalidate cache when it changes\n ...(linkedDesignSystemPath && {\n designSystem: [path.join(linkedDesignSystemPath, 'dist')],\n }),\n },\n version: crypto\n .createHash('md5')\n .update(Object.entries(baseConfig.resolve.alias ?? {}).join())\n .digest('hex'),\n },\n resolve: {\n ...baseConfig.resolve,\n alias: {\n ...baseConfig.resolve.alias,\n ...getMonorepoAliases({ monorepo }),\n },\n },\n entry: {\n ...baseConfig.entry,\n main: [\n `${require.resolve('webpack-hot-middleware/client')}?path=/__webpack_hmr`,\n ...baseConfig.entry.main,\n ],\n },\n stats: 'errors-warnings',\n mode: 'development',\n devtool: 'inline-source-map',\n output: {\n filename: '[name].js',\n path: ctx.distPath,\n publicPath: `${ctx.basePath.replace(/\\/$/, '')}/`,\n },\n infrastructureLogging: {\n level: 'error',\n },\n plugins: [\n ...baseConfig.plugins,\n new HotModuleReplacementPlugin(),\n new ReactRefreshWebpackPlugin(),\n ],\n };\n};\n\nconst resolveProductionConfig = async (ctx: BuildContext): Promise<Configuration> => {\n const target = browserslistToEsbuild(ctx.target);\n\n const baseConfig = await resolveBaseConfig(ctx);\n\n return {\n ...baseConfig,\n stats: 'errors-only',\n mode: 'production',\n bail: true,\n devtool: ctx.options.sourcemaps ? 'source-map' : false,\n output: {\n path: ctx.distPath,\n publicPath: `${ctx.basePath.replace(/\\/$/, '')}/`,\n // Utilize long-term caching by adding content hashes (not compilation hashes)\n // to compiled assets for production\n filename: '[name].[contenthash:8].js',\n chunkFilename: '[name].[contenthash:8].chunk.js',\n },\n optimization: {\n minimize: ctx.options.minify,\n minimizer: [\n new EsbuildPlugin({\n target,\n css: true, // Apply minification to CSS assets\n }),\n ],\n moduleIds: 'deterministic',\n runtimeChunk: true,\n },\n plugins: [\n ...baseConfig.plugins,\n new MiniCssExtractPlugin({\n filename: '[name].[chunkhash].css',\n chunkFilename: '[name].[chunkhash].chunkhash.css',\n ignoreOrder: true,\n }),\n ctx.options.stats && (new BundleAnalyzerPlugin() as unknown as WebpackPluginInstance), // TODO: find out if this is an actual issue or just a ts bug\n ].filter(Boolean),\n };\n};\n\nconst USER_CONFIGS = ['webpack.config.js', 'webpack.config.mjs', 'webpack.config.ts'];\n\ntype UserWebpackConfig = (config: Configuration, webpack: unknown) => Configuration;\n\nconst mergeConfigWithUserConfig = async (config: Configuration, ctx: BuildContext) => {\n const userConfig = await getUserConfig<UserWebpackConfig>(USER_CONFIGS, ctx);\n\n if (userConfig) {\n if (typeof userConfig === 'function') {\n const webpack = await import('webpack');\n return userConfig(config, webpack);\n }\n\n ctx.logger.warn(\n `You've exported something other than a function from ${path.join(\n ctx.appDir,\n 'src',\n 'admin',\n 'webpack.config'\n )}, this will ignored.`\n );\n }\n\n return config;\n};\n\nexport { mergeConfigWithUserConfig, resolveDevelopmentConfig, resolveProductionConfig };\n"],"names":["resolveBaseConfig","ctx","target","browserslistToEsbuild","experiments","topLevelAwait","entry","main","resolve","alias","react","getModulePath","extensions","module","rules","test","loader","require","options","jsx","use","fullySpecified","type","parser","dataUrlCondition","maxSize","plugins","HtmlWebpackPlugin","inject","template","path","runtimeDir","DefinePlugin","Object","entries","env","reduce","acc","key","value","JSON","stringify","tsconfig","ForkTsCheckerPlugin","typescript","configFile","configOverwrite","compilerOptions","sourceMap","sourcemaps","filter","Boolean","resolveDevelopmentConfig","baseConfig","monorepo","loadStrapiMonorepo","cwd","linkedDesignSystemPath","getLinkedDesignSystemPath","cache","buildDependencies","config","__filename","designSystem","join","version","crypto","createHash","update","digest","getMonorepoAliases","stats","mode","devtool","output","filename","distPath","publicPath","basePath","replace","infrastructureLogging","level","HotModuleReplacementPlugin","ReactRefreshWebpackPlugin","resolveProductionConfig","bail","chunkFilename","optimization","minimize","minify","minimizer","EsbuildPlugin","css","moduleIds","runtimeChunk","MiniCssExtractPlugin","ignoreOrder","BundleAnalyzerPlugin","USER_CONFIGS","mergeConfigWithUserConfig","userConfig","getUserConfig","webpack","logger","warn","appDir"],"mappings":"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"}
|
|
@@ -174,7 +174,7 @@ const resolveDevelopmentConfig = async (ctx)=>{
|
|
|
174
174
|
output: {
|
|
175
175
|
filename: '[name].js',
|
|
176
176
|
path: ctx.distPath,
|
|
177
|
-
publicPath: ctx.basePath
|
|
177
|
+
publicPath: `${ctx.basePath.replace(/\/$/, '')}/`
|
|
178
178
|
},
|
|
179
179
|
infrastructureLogging: {
|
|
180
180
|
level: 'error'
|
|
@@ -197,7 +197,7 @@ const resolveProductionConfig = async (ctx)=>{
|
|
|
197
197
|
devtool: ctx.options.sourcemaps ? 'source-map' : false,
|
|
198
198
|
output: {
|
|
199
199
|
path: ctx.distPath,
|
|
200
|
-
publicPath: ctx.basePath
|
|
200
|
+
publicPath: `${ctx.basePath.replace(/\/$/, '')}/`,
|
|
201
201
|
// Utilize long-term caching by adding content hashes (not compilation hashes)
|
|
202
202
|
// to compiled assets for production
|
|
203
203
|
filename: '[name].[contenthash:8].js',
|