@jsenv/core 27.0.0-alpha.94 → 27.0.0-alpha.95
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/main.js +137 -129
- package/package.json +2 -2
- package/src/build/start_build_server.js +46 -45
- package/src/dev/start_dev_server.js +55 -51
- package/src/plugins/plugins.js +4 -0
package/dist/main.js
CHANGED
|
@@ -16742,6 +16742,10 @@ const getCorePlugins = ({
|
|
|
16742
16742
|
nodeEsmResolution = {};
|
|
16743
16743
|
}
|
|
16744
16744
|
|
|
16745
|
+
if (clientAutoreload === true) {
|
|
16746
|
+
clientAutoreload = {};
|
|
16747
|
+
}
|
|
16748
|
+
|
|
16745
16749
|
return [jsenvPluginUrlAnalysis({
|
|
16746
16750
|
rootDirectoryUrl,
|
|
16747
16751
|
...urlAnalysis
|
|
@@ -16759,7 +16763,7 @@ const getCorePlugins = ({
|
|
|
16759
16763
|
...nodeEsmResolution
|
|
16760
16764
|
}), jsenvPluginUrlResolution(), jsenvPluginUrlVersion(), jsenvPluginCommonJsGlobals(), jsenvPluginImportMetaScenarios(), jsenvPluginNodeRuntime({
|
|
16761
16765
|
runtimeCompat
|
|
16762
|
-
}), jsenvPluginBundling(bundling), jsenvPluginMinification(minification), jsenvPluginImportMetaHot(), ...(clientAutoreload ? [jsenvPluginAutoreload({
|
|
16766
|
+
}), jsenvPluginBundling(bundling), jsenvPluginMinification(minification), jsenvPluginImportMetaHot(), ...(clientAutoreload ? [jsenvPluginAutoreload({ ...clientAutoreload,
|
|
16763
16767
|
rootDirectoryUrl,
|
|
16764
16768
|
urlGraph,
|
|
16765
16769
|
scenario,
|
|
@@ -19268,18 +19272,18 @@ const startDevServer = async ({
|
|
|
19268
19272
|
privateKey,
|
|
19269
19273
|
keepProcessAlive = true,
|
|
19270
19274
|
rootDirectoryUrl,
|
|
19275
|
+
clientFiles = {
|
|
19276
|
+
"./src/": true,
|
|
19277
|
+
"./tests/": true
|
|
19278
|
+
},
|
|
19271
19279
|
devServerFiles = {
|
|
19272
19280
|
"./package.json": true,
|
|
19273
19281
|
"./jsenv.config.mjs": true
|
|
19274
19282
|
},
|
|
19283
|
+
clientAutoreload = true,
|
|
19284
|
+
devServerAutoreload = false,
|
|
19275
19285
|
devServerMainFile = getCallerPosition().url,
|
|
19276
|
-
devServerAutoreload = true,
|
|
19277
|
-
clientFiles = {
|
|
19278
|
-
"./src/": true,
|
|
19279
|
-
"./tests/": true
|
|
19280
|
-
},
|
|
19281
19286
|
cooldownBetweenFileEvents,
|
|
19282
|
-
clientAutoreload = true,
|
|
19283
19287
|
sourcemaps = "inline",
|
|
19284
19288
|
// default runtimeCompat assume dev server will be request by recent browsers
|
|
19285
19289
|
// Used by "jsenv_plugin_node_runtime.js" to deactivate itself
|
|
@@ -19330,70 +19334,74 @@ const startDevServer = async ({
|
|
|
19330
19334
|
});
|
|
19331
19335
|
}
|
|
19332
19336
|
|
|
19333
|
-
|
|
19337
|
+
let reloadableWorker;
|
|
19334
19338
|
|
|
19335
|
-
if (devServerAutoreload
|
|
19336
|
-
|
|
19337
|
-
relativeUrl,
|
|
19338
|
-
event
|
|
19339
|
-
}) => {
|
|
19340
|
-
const url = new URL(relativeUrl, rootDirectoryUrl).href;
|
|
19341
|
-
logger.info(`file ${event} ${url} -> restarting server...`);
|
|
19342
|
-
reloadableWorker.reload();
|
|
19343
|
-
};
|
|
19339
|
+
if (devServerAutoreload) {
|
|
19340
|
+
reloadableWorker = createReloadableWorker(devServerMainFile);
|
|
19344
19341
|
|
|
19345
|
-
|
|
19346
|
-
|
|
19347
|
-
|
|
19348
|
-
|
|
19349
|
-
},
|
|
19350
|
-
cooldownBetweenFileEvents,
|
|
19351
|
-
keepProcessAlive: false,
|
|
19352
|
-
recursive: true,
|
|
19353
|
-
added: ({
|
|
19354
|
-
relativeUrl
|
|
19355
|
-
}) => {
|
|
19356
|
-
devServerFileChangeCallback({
|
|
19357
|
-
relativeUrl,
|
|
19358
|
-
event: "added"
|
|
19359
|
-
});
|
|
19360
|
-
},
|
|
19361
|
-
updated: ({
|
|
19362
|
-
relativeUrl
|
|
19363
|
-
}) => {
|
|
19364
|
-
devServerFileChangeCallback({
|
|
19365
|
-
relativeUrl,
|
|
19366
|
-
event: "modified"
|
|
19367
|
-
});
|
|
19368
|
-
},
|
|
19369
|
-
removed: ({
|
|
19370
|
-
relativeUrl
|
|
19342
|
+
if (reloadableWorker.isPrimary) {
|
|
19343
|
+
const devServerFileChangeCallback = ({
|
|
19344
|
+
relativeUrl,
|
|
19345
|
+
event
|
|
19371
19346
|
}) => {
|
|
19372
|
-
|
|
19373
|
-
|
|
19374
|
-
|
|
19375
|
-
|
|
19376
|
-
}
|
|
19377
|
-
});
|
|
19378
|
-
operation.addAbortCallback(() => {
|
|
19379
|
-
stopWatchingDevServerFiles();
|
|
19380
|
-
reloadableWorker.terminate();
|
|
19381
|
-
});
|
|
19382
|
-
const worker = await reloadableWorker.load();
|
|
19383
|
-
const messagePromise = new Promise(resolve => {
|
|
19384
|
-
worker.once("message", resolve);
|
|
19385
|
-
});
|
|
19386
|
-
await messagePromise; // if (!keepProcessAlive) {
|
|
19387
|
-
// worker.unref()
|
|
19388
|
-
// }
|
|
19347
|
+
const url = new URL(relativeUrl, rootDirectoryUrl).href;
|
|
19348
|
+
logger.info(`file ${event} ${url} -> restarting server...`);
|
|
19349
|
+
reloadableWorker.reload();
|
|
19350
|
+
};
|
|
19389
19351
|
|
|
19390
|
-
|
|
19391
|
-
|
|
19392
|
-
|
|
19352
|
+
const stopWatchingDevServerFiles = registerDirectoryLifecycle(rootDirectoryUrl, {
|
|
19353
|
+
watchPatterns: { ...devServerFiles.include,
|
|
19354
|
+
[devServerMainFile]: true,
|
|
19355
|
+
".jsenv/": false
|
|
19356
|
+
},
|
|
19357
|
+
cooldownBetweenFileEvents,
|
|
19358
|
+
keepProcessAlive: false,
|
|
19359
|
+
recursive: true,
|
|
19360
|
+
added: ({
|
|
19361
|
+
relativeUrl
|
|
19362
|
+
}) => {
|
|
19363
|
+
devServerFileChangeCallback({
|
|
19364
|
+
relativeUrl,
|
|
19365
|
+
event: "added"
|
|
19366
|
+
});
|
|
19367
|
+
},
|
|
19368
|
+
updated: ({
|
|
19369
|
+
relativeUrl
|
|
19370
|
+
}) => {
|
|
19371
|
+
devServerFileChangeCallback({
|
|
19372
|
+
relativeUrl,
|
|
19373
|
+
event: "modified"
|
|
19374
|
+
});
|
|
19375
|
+
},
|
|
19376
|
+
removed: ({
|
|
19377
|
+
relativeUrl
|
|
19378
|
+
}) => {
|
|
19379
|
+
devServerFileChangeCallback({
|
|
19380
|
+
relativeUrl,
|
|
19381
|
+
event: "removed"
|
|
19382
|
+
});
|
|
19383
|
+
}
|
|
19384
|
+
});
|
|
19385
|
+
operation.addAbortCallback(() => {
|
|
19393
19386
|
stopWatchingDevServerFiles();
|
|
19394
19387
|
reloadableWorker.terminate();
|
|
19395
|
-
}
|
|
19396
|
-
|
|
19388
|
+
});
|
|
19389
|
+
const worker = await reloadableWorker.load();
|
|
19390
|
+
const messagePromise = new Promise(resolve => {
|
|
19391
|
+
worker.once("message", resolve);
|
|
19392
|
+
});
|
|
19393
|
+
await messagePromise; // if (!keepProcessAlive) {
|
|
19394
|
+
// worker.unref()
|
|
19395
|
+
// }
|
|
19396
|
+
|
|
19397
|
+
return {
|
|
19398
|
+
origin: `${protocol}://127.0.0.1:${port}`,
|
|
19399
|
+
stop: () => {
|
|
19400
|
+
stopWatchingDevServerFiles();
|
|
19401
|
+
reloadableWorker.terminate();
|
|
19402
|
+
}
|
|
19403
|
+
};
|
|
19404
|
+
}
|
|
19397
19405
|
}
|
|
19398
19406
|
|
|
19399
19407
|
const startDevServerTask = createTaskLog("start dev server", {
|
|
@@ -19504,7 +19512,7 @@ const startDevServer = async ({
|
|
|
19504
19512
|
};
|
|
19505
19513
|
});
|
|
19506
19514
|
|
|
19507
|
-
if (reloadableWorker.isWorker) {
|
|
19515
|
+
if (reloadableWorker && reloadableWorker.isWorker) {
|
|
19508
19516
|
parentPort.postMessage(server.origin);
|
|
19509
19517
|
}
|
|
19510
19518
|
|
|
@@ -24772,8 +24780,8 @@ const startBuildServer = async ({
|
|
|
24772
24780
|
"./package.json": true,
|
|
24773
24781
|
"./jsenv.config.mjs": true
|
|
24774
24782
|
},
|
|
24783
|
+
buildServerAutoreload = false,
|
|
24775
24784
|
buildServerMainFile = getCallerPosition().url,
|
|
24776
|
-
buildServerAutoreload = true,
|
|
24777
24785
|
cooldownBetweenFileEvents
|
|
24778
24786
|
}) => {
|
|
24779
24787
|
const logger = createLogger({
|
|
@@ -24815,74 +24823,74 @@ const startBuildServer = async ({
|
|
|
24815
24823
|
});
|
|
24816
24824
|
}
|
|
24817
24825
|
|
|
24818
|
-
|
|
24826
|
+
let reloadableWorker;
|
|
24819
24827
|
|
|
24820
|
-
if (buildServerAutoreload
|
|
24821
|
-
|
|
24822
|
-
relativeUrl,
|
|
24823
|
-
event
|
|
24824
|
-
}) => {
|
|
24825
|
-
const url = new URL(relativeUrl, rootDirectoryUrl).href;
|
|
24828
|
+
if (buildServerAutoreload) {
|
|
24829
|
+
reloadableWorker = createReloadableWorker(buildServerMainFile);
|
|
24826
24830
|
|
|
24827
|
-
|
|
24831
|
+
if (reloadableWorker.isPrimary) {
|
|
24832
|
+
const buildServerFileChangeCallback = ({
|
|
24833
|
+
relativeUrl,
|
|
24834
|
+
event
|
|
24835
|
+
}) => {
|
|
24836
|
+
const url = new URL(relativeUrl, rootDirectoryUrl).href;
|
|
24828
24837
|
logger.info(`file ${event} ${url} -> restarting server...`);
|
|
24829
24838
|
reloadableWorker.reload();
|
|
24830
|
-
}
|
|
24831
|
-
};
|
|
24832
|
-
|
|
24833
|
-
const stopWatchingBuildServerFiles = registerDirectoryLifecycle(rootDirectoryUrl, {
|
|
24834
|
-
watchPatterns: {
|
|
24835
|
-
[buildServerMainFile]: true,
|
|
24836
|
-
...buildServerFiles,
|
|
24837
|
-
".jsenv/": false
|
|
24838
|
-
},
|
|
24839
|
-
cooldownBetweenFileEvents,
|
|
24840
|
-
keepProcessAlive: false,
|
|
24841
|
-
recursive: true,
|
|
24842
|
-
added: ({
|
|
24843
|
-
relativeUrl
|
|
24844
|
-
}) => {
|
|
24845
|
-
buildServerFileChangeCallback({
|
|
24846
|
-
relativeUrl,
|
|
24847
|
-
event: "added"
|
|
24848
|
-
});
|
|
24849
|
-
},
|
|
24850
|
-
updated: ({
|
|
24851
|
-
relativeUrl
|
|
24852
|
-
}) => {
|
|
24853
|
-
buildServerFileChangeCallback({
|
|
24854
|
-
relativeUrl,
|
|
24855
|
-
event: "modified"
|
|
24856
|
-
});
|
|
24857
|
-
},
|
|
24858
|
-
removed: ({
|
|
24859
|
-
relativeUrl
|
|
24860
|
-
}) => {
|
|
24861
|
-
buildServerFileChangeCallback({
|
|
24862
|
-
relativeUrl,
|
|
24863
|
-
event: "removed"
|
|
24864
|
-
});
|
|
24865
|
-
}
|
|
24866
|
-
});
|
|
24867
|
-
operation.addAbortCallback(() => {
|
|
24868
|
-
stopWatchingBuildServerFiles();
|
|
24869
|
-
reloadableWorker.terminate();
|
|
24870
|
-
});
|
|
24871
|
-
const worker = await reloadableWorker.load();
|
|
24872
|
-
const messagePromise = new Promise(resolve => {
|
|
24873
|
-
worker.once("message", resolve);
|
|
24874
|
-
});
|
|
24875
|
-
await messagePromise; // if (!keepProcessAlive) {
|
|
24876
|
-
// worker.unref()
|
|
24877
|
-
// }
|
|
24839
|
+
};
|
|
24878
24840
|
|
|
24879
|
-
|
|
24880
|
-
|
|
24881
|
-
|
|
24841
|
+
const stopWatchingBuildServerFiles = registerDirectoryLifecycle(rootDirectoryUrl, {
|
|
24842
|
+
watchPatterns: { ...buildServerFiles,
|
|
24843
|
+
[buildServerMainFile]: true,
|
|
24844
|
+
".jsenv/": false
|
|
24845
|
+
},
|
|
24846
|
+
cooldownBetweenFileEvents,
|
|
24847
|
+
keepProcessAlive: false,
|
|
24848
|
+
recursive: true,
|
|
24849
|
+
added: ({
|
|
24850
|
+
relativeUrl
|
|
24851
|
+
}) => {
|
|
24852
|
+
buildServerFileChangeCallback({
|
|
24853
|
+
relativeUrl,
|
|
24854
|
+
event: "added"
|
|
24855
|
+
});
|
|
24856
|
+
},
|
|
24857
|
+
updated: ({
|
|
24858
|
+
relativeUrl
|
|
24859
|
+
}) => {
|
|
24860
|
+
buildServerFileChangeCallback({
|
|
24861
|
+
relativeUrl,
|
|
24862
|
+
event: "modified"
|
|
24863
|
+
});
|
|
24864
|
+
},
|
|
24865
|
+
removed: ({
|
|
24866
|
+
relativeUrl
|
|
24867
|
+
}) => {
|
|
24868
|
+
buildServerFileChangeCallback({
|
|
24869
|
+
relativeUrl,
|
|
24870
|
+
event: "removed"
|
|
24871
|
+
});
|
|
24872
|
+
}
|
|
24873
|
+
});
|
|
24874
|
+
operation.addAbortCallback(() => {
|
|
24882
24875
|
stopWatchingBuildServerFiles();
|
|
24883
24876
|
reloadableWorker.terminate();
|
|
24884
|
-
}
|
|
24885
|
-
|
|
24877
|
+
});
|
|
24878
|
+
const worker = await reloadableWorker.load();
|
|
24879
|
+
const messagePromise = new Promise(resolve => {
|
|
24880
|
+
worker.once("message", resolve);
|
|
24881
|
+
});
|
|
24882
|
+
await messagePromise; // if (!keepProcessAlive) {
|
|
24883
|
+
// worker.unref()
|
|
24884
|
+
// }
|
|
24885
|
+
|
|
24886
|
+
return {
|
|
24887
|
+
origin: `${protocol}://127.0.0.1:${port}`,
|
|
24888
|
+
stop: () => {
|
|
24889
|
+
stopWatchingBuildServerFiles();
|
|
24890
|
+
reloadableWorker.terminate();
|
|
24891
|
+
}
|
|
24892
|
+
};
|
|
24893
|
+
}
|
|
24886
24894
|
}
|
|
24887
24895
|
|
|
24888
24896
|
const startBuildServerTask = createTaskLog("start build server", {
|
|
@@ -24931,7 +24939,7 @@ const startBuildServer = async ({
|
|
|
24931
24939
|
});
|
|
24932
24940
|
logger.info(``);
|
|
24933
24941
|
|
|
24934
|
-
if (reloadableWorker.isWorker) {
|
|
24942
|
+
if (reloadableWorker && reloadableWorker.isWorker) {
|
|
24935
24943
|
parentPort.postMessage(server.origin);
|
|
24936
24944
|
}
|
|
24937
24945
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/core",
|
|
3
|
-
"version": "27.0.0-alpha.
|
|
3
|
+
"version": "27.0.0-alpha.95",
|
|
4
4
|
"description": "Tool to develop, test and build js projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -110,4 +110,4 @@
|
|
|
110
110
|
"playwright": "1.22.2",
|
|
111
111
|
"prettier": "2.7.1"
|
|
112
112
|
}
|
|
113
|
-
}
|
|
113
|
+
}
|
|
@@ -56,8 +56,8 @@ export const startBuildServer = async ({
|
|
|
56
56
|
"./package.json": true,
|
|
57
57
|
"./jsenv.config.mjs": true,
|
|
58
58
|
},
|
|
59
|
+
buildServerAutoreload = false,
|
|
59
60
|
buildServerMainFile = getCallerPosition().url,
|
|
60
|
-
buildServerAutoreload = true,
|
|
61
61
|
cooldownBetweenFileEvents,
|
|
62
62
|
}) => {
|
|
63
63
|
const logger = createLogger({ logLevel })
|
|
@@ -96,55 +96,56 @@ export const startBuildServer = async ({
|
|
|
96
96
|
port = await findFreePort(port, { signal: operation.signal })
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
if (buildServerAutoreload
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
let reloadableWorker
|
|
100
|
+
if (buildServerAutoreload) {
|
|
101
|
+
reloadableWorker = createReloadableWorker(buildServerMainFile)
|
|
102
|
+
if (reloadableWorker.isPrimary) {
|
|
103
|
+
const buildServerFileChangeCallback = ({ relativeUrl, event }) => {
|
|
104
|
+
const url = new URL(relativeUrl, rootDirectoryUrl).href
|
|
104
105
|
logger.info(`file ${event} ${url} -> restarting server...`)
|
|
105
106
|
reloadableWorker.reload()
|
|
106
107
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
108
|
+
const stopWatchingBuildServerFiles = registerDirectoryLifecycle(
|
|
109
|
+
rootDirectoryUrl,
|
|
110
|
+
{
|
|
111
|
+
watchPatterns: {
|
|
112
|
+
...buildServerFiles,
|
|
113
|
+
[buildServerMainFile]: true,
|
|
114
|
+
".jsenv/": false,
|
|
115
|
+
},
|
|
116
|
+
cooldownBetweenFileEvents,
|
|
117
|
+
keepProcessAlive: false,
|
|
118
|
+
recursive: true,
|
|
119
|
+
added: ({ relativeUrl }) => {
|
|
120
|
+
buildServerFileChangeCallback({ relativeUrl, event: "added" })
|
|
121
|
+
},
|
|
122
|
+
updated: ({ relativeUrl }) => {
|
|
123
|
+
buildServerFileChangeCallback({ relativeUrl, event: "modified" })
|
|
124
|
+
},
|
|
125
|
+
removed: ({ relativeUrl }) => {
|
|
126
|
+
buildServerFileChangeCallback({ relativeUrl, event: "removed" })
|
|
127
|
+
},
|
|
127
128
|
},
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
operation.addAbortCallback(() => {
|
|
131
|
-
stopWatchingBuildServerFiles()
|
|
132
|
-
reloadableWorker.terminate()
|
|
133
|
-
})
|
|
134
|
-
const worker = await reloadableWorker.load()
|
|
135
|
-
const messagePromise = new Promise((resolve) => {
|
|
136
|
-
worker.once("message", resolve)
|
|
137
|
-
})
|
|
138
|
-
await messagePromise
|
|
139
|
-
// if (!keepProcessAlive) {
|
|
140
|
-
// worker.unref()
|
|
141
|
-
// }
|
|
142
|
-
return {
|
|
143
|
-
origin: `${protocol}://127.0.0.1:${port}`,
|
|
144
|
-
stop: () => {
|
|
129
|
+
)
|
|
130
|
+
operation.addAbortCallback(() => {
|
|
145
131
|
stopWatchingBuildServerFiles()
|
|
146
132
|
reloadableWorker.terminate()
|
|
147
|
-
}
|
|
133
|
+
})
|
|
134
|
+
const worker = await reloadableWorker.load()
|
|
135
|
+
const messagePromise = new Promise((resolve) => {
|
|
136
|
+
worker.once("message", resolve)
|
|
137
|
+
})
|
|
138
|
+
await messagePromise
|
|
139
|
+
// if (!keepProcessAlive) {
|
|
140
|
+
// worker.unref()
|
|
141
|
+
// }
|
|
142
|
+
return {
|
|
143
|
+
origin: `${protocol}://127.0.0.1:${port}`,
|
|
144
|
+
stop: () => {
|
|
145
|
+
stopWatchingBuildServerFiles()
|
|
146
|
+
reloadableWorker.terminate()
|
|
147
|
+
},
|
|
148
|
+
}
|
|
148
149
|
}
|
|
149
150
|
}
|
|
150
151
|
|
|
@@ -196,7 +197,7 @@ export const startBuildServer = async ({
|
|
|
196
197
|
logger.info(`- ${server.origins[key]}`)
|
|
197
198
|
})
|
|
198
199
|
logger.info(``)
|
|
199
|
-
if (reloadableWorker.isWorker) {
|
|
200
|
+
if (reloadableWorker && reloadableWorker.isWorker) {
|
|
200
201
|
parentPort.postMessage(server.origin)
|
|
201
202
|
}
|
|
202
203
|
return {
|
|
@@ -32,18 +32,18 @@ export const startDevServer = async ({
|
|
|
32
32
|
privateKey,
|
|
33
33
|
keepProcessAlive = true,
|
|
34
34
|
rootDirectoryUrl,
|
|
35
|
+
clientFiles = {
|
|
36
|
+
"./src/": true,
|
|
37
|
+
"./tests/": true,
|
|
38
|
+
},
|
|
35
39
|
devServerFiles = {
|
|
36
40
|
"./package.json": true,
|
|
37
41
|
"./jsenv.config.mjs": true,
|
|
38
42
|
},
|
|
43
|
+
clientAutoreload = true,
|
|
44
|
+
devServerAutoreload = false,
|
|
39
45
|
devServerMainFile = getCallerPosition().url,
|
|
40
|
-
devServerAutoreload = true,
|
|
41
|
-
clientFiles = {
|
|
42
|
-
"./src/": true,
|
|
43
|
-
"./tests/": true,
|
|
44
|
-
},
|
|
45
46
|
cooldownBetweenFileEvents,
|
|
46
|
-
clientAutoreload = true,
|
|
47
47
|
|
|
48
48
|
sourcemaps = "inline",
|
|
49
49
|
// default runtimeCompat assume dev server will be request by recent browsers
|
|
@@ -92,53 +92,57 @@ export const startDevServer = async ({
|
|
|
92
92
|
port = await findFreePort(port, { signal: operation.signal })
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
if (devServerAutoreload
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
95
|
+
let reloadableWorker
|
|
96
|
+
if (devServerAutoreload) {
|
|
97
|
+
reloadableWorker = createReloadableWorker(devServerMainFile)
|
|
98
|
+
if (reloadableWorker.isPrimary) {
|
|
99
|
+
const devServerFileChangeCallback = ({ relativeUrl, event }) => {
|
|
100
|
+
const url = new URL(relativeUrl, rootDirectoryUrl).href
|
|
101
|
+
logger.info(`file ${event} ${url} -> restarting server...`)
|
|
102
|
+
reloadableWorker.reload()
|
|
103
|
+
}
|
|
104
|
+
const stopWatchingDevServerFiles = registerDirectoryLifecycle(
|
|
105
|
+
rootDirectoryUrl,
|
|
106
|
+
{
|
|
107
|
+
watchPatterns: {
|
|
108
|
+
...devServerFiles.include,
|
|
109
|
+
[devServerMainFile]: true,
|
|
110
|
+
".jsenv/": false,
|
|
111
|
+
},
|
|
112
|
+
cooldownBetweenFileEvents,
|
|
113
|
+
keepProcessAlive: false,
|
|
114
|
+
recursive: true,
|
|
115
|
+
added: ({ relativeUrl }) => {
|
|
116
|
+
devServerFileChangeCallback({ relativeUrl, event: "added" })
|
|
117
|
+
},
|
|
118
|
+
updated: ({ relativeUrl }) => {
|
|
119
|
+
devServerFileChangeCallback({ relativeUrl, event: "modified" })
|
|
120
|
+
},
|
|
121
|
+
removed: ({ relativeUrl }) => {
|
|
122
|
+
devServerFileChangeCallback({ relativeUrl, event: "removed" })
|
|
123
|
+
},
|
|
120
124
|
},
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
operation.addAbortCallback(() => {
|
|
124
|
-
stopWatchingDevServerFiles()
|
|
125
|
-
reloadableWorker.terminate()
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
const worker = await reloadableWorker.load()
|
|
129
|
-
const messagePromise = new Promise((resolve) => {
|
|
130
|
-
worker.once("message", resolve)
|
|
131
|
-
})
|
|
132
|
-
await messagePromise
|
|
133
|
-
// if (!keepProcessAlive) {
|
|
134
|
-
// worker.unref()
|
|
135
|
-
// }
|
|
136
|
-
return {
|
|
137
|
-
origin: `${protocol}://127.0.0.1:${port}`,
|
|
138
|
-
stop: () => {
|
|
125
|
+
)
|
|
126
|
+
operation.addAbortCallback(() => {
|
|
139
127
|
stopWatchingDevServerFiles()
|
|
140
128
|
reloadableWorker.terminate()
|
|
141
|
-
}
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
const worker = await reloadableWorker.load()
|
|
132
|
+
const messagePromise = new Promise((resolve) => {
|
|
133
|
+
worker.once("message", resolve)
|
|
134
|
+
})
|
|
135
|
+
await messagePromise
|
|
136
|
+
// if (!keepProcessAlive) {
|
|
137
|
+
// worker.unref()
|
|
138
|
+
// }
|
|
139
|
+
return {
|
|
140
|
+
origin: `${protocol}://127.0.0.1:${port}`,
|
|
141
|
+
stop: () => {
|
|
142
|
+
stopWatchingDevServerFiles()
|
|
143
|
+
reloadableWorker.terminate()
|
|
144
|
+
},
|
|
145
|
+
}
|
|
142
146
|
}
|
|
143
147
|
}
|
|
144
148
|
|
|
@@ -233,7 +237,7 @@ export const startDevServer = async ({
|
|
|
233
237
|
kitchen.pluginController.callHooks("destroy", {})
|
|
234
238
|
}
|
|
235
239
|
})
|
|
236
|
-
if (reloadableWorker.isWorker) {
|
|
240
|
+
if (reloadableWorker && reloadableWorker.isWorker) {
|
|
237
241
|
parentPort.postMessage(server.origin)
|
|
238
242
|
}
|
|
239
243
|
return {
|
package/src/plugins/plugins.js
CHANGED
|
@@ -45,6 +45,9 @@ export const getCorePlugins = ({
|
|
|
45
45
|
if (nodeEsmResolution === true) {
|
|
46
46
|
nodeEsmResolution = {}
|
|
47
47
|
}
|
|
48
|
+
if (clientAutoreload === true) {
|
|
49
|
+
clientAutoreload = {}
|
|
50
|
+
}
|
|
48
51
|
return [
|
|
49
52
|
jsenvPluginUrlAnalysis({ rootDirectoryUrl, ...urlAnalysis }),
|
|
50
53
|
jsenvPluginTranspilation(transpilation),
|
|
@@ -78,6 +81,7 @@ export const getCorePlugins = ({
|
|
|
78
81
|
...(clientAutoreload
|
|
79
82
|
? [
|
|
80
83
|
jsenvPluginAutoreload({
|
|
84
|
+
...clientAutoreload,
|
|
81
85
|
rootDirectoryUrl,
|
|
82
86
|
urlGraph,
|
|
83
87
|
scenario,
|