sku 15.1.0 → 15.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # sku
2
2
 
3
+ ## 15.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - `start-ssr`: `--list-urls, -l` flag is available for SSR apps ([#1435](https://github.com/seek-oss/sku/pull/1435))
8
+
9
+ ### Patch Changes
10
+
11
+ - Fix incorrect devServerMiddleware validation logic ([#1437](https://github.com/seek-oss/sku/pull/1437))
12
+
3
13
  ## 15.1.0
4
14
 
5
15
  ### Minor Changes
@@ -102,7 +102,7 @@ export declare const createSkuContext: ({ configPath, port: portArg, strictPort,
102
102
  };
103
103
  paths: {
104
104
  appSkuConfigPath: string;
105
- devServerMiddleware: string;
105
+ devServerMiddleware: string | undefined;
106
106
  src: string[];
107
107
  compilePackages: string[];
108
108
  clientEntry: string;
@@ -147,7 +147,6 @@ export declare const createSkuContext: ({ configPath, port: portArg, strictPort,
147
147
  initialPath: string;
148
148
  transformOutputPath: (input: import("../types/types.d.ts").TransformOutputPathFunctionParams) => string;
149
149
  sites: import("../types/types.d.ts").SkuSiteObject[];
150
- useDevServerMiddleware: boolean;
151
150
  skipPackageCompatibilityCompilation: string[];
152
151
  externalizeNodeModules: boolean;
153
152
  defaultClientEntry: string;
@@ -108,13 +108,12 @@ export const createSkuContext = ({ configPath, port: portArg, strictPort, }) =>
108
108
  : `${skuConfig.publicPath}/`;
109
109
  const devServerMiddleware = skuConfig.devServerMiddleware &&
110
110
  getPathFromCwd(skuConfig.devServerMiddleware);
111
- const useDevServerMiddleware = Boolean(devServerMiddleware) || existsSync(devServerMiddleware);
112
- if (devServerMiddleware && !useDevServerMiddleware) {
111
+ if (devServerMiddleware && !existsSync(devServerMiddleware)) {
113
112
  throw new Error(`${devServerMiddleware} does not exist. Please create the file or remove 'devServerMiddleware' from your sku config.`);
114
113
  }
115
114
  const paths = {
116
115
  appSkuConfigPath: appSkuConfigPath,
117
- devServerMiddleware: devServerMiddleware,
116
+ devServerMiddleware,
118
117
  src: skuConfig.srcPaths.map(getPathFromCwd),
119
118
  compilePackages: [...defaultCompilePackages, ...skuConfig.compilePackages],
120
119
  clientEntry: getPathFromCwd(skuConfig.clientEntry),
@@ -191,7 +190,6 @@ export const createSkuContext = ({ configPath, port: portArg, strictPort, }) =>
191
190
  initialPath,
192
191
  transformOutputPath: skuConfig.transformOutputPath,
193
192
  sites,
194
- useDevServerMiddleware,
195
193
  skipPackageCompatibilityCompilation,
196
194
  externalizeNodeModules,
197
195
  defaultClientEntry,
@@ -14,7 +14,7 @@ import createServer from '../../../utils/createServer.js';
14
14
  import { getRouteWithLanguage, getValidLanguagesForRoute, } from '../../../utils/language-utils.js';
15
15
  import { configureProject, validatePeerDeps, } from '../../../utils/configure.js';
16
16
  export const serveAction = async ({ site: preferredSite, environment: environmentOption, skuContext, }) => {
17
- const { port, paths, initialPath, routes, sites, useDevServerMiddleware, httpsDevServer, hosts, languages, } = skuContext;
17
+ const { port, paths, initialPath, routes, sites, httpsDevServer, hosts, languages, } = skuContext;
18
18
  await configureProject(skuContext);
19
19
  validatePeerDeps(skuContext);
20
20
  provider.count('serve');
@@ -50,7 +50,7 @@ export const serveAction = async ({ site: preferredSite, environment: environmen
50
50
  skuContext,
51
51
  });
52
52
  const app = express();
53
- if (useDevServerMiddleware) {
53
+ if (paths.devServerMiddleware) {
54
54
  const devServerMiddleware = (await import(paths.devServerMiddleware))
55
55
  .default;
56
56
  if (devServerMiddleware && typeof devServerMiddleware === 'function') {
@@ -17,7 +17,7 @@ const localhost = '0.0.0.0';
17
17
  const hot = process.env.SKU_HOT !== 'false';
18
18
  export const webpackStartHandler = async ({ stats: statsOption, environment: environmentOption, skuContext, }) => {
19
19
  process.env.NODE_ENV = 'development';
20
- const { port, initialPath, paths, routes, httpsDevServer, useDevServerMiddleware, sites, hosts, } = skuContext;
20
+ const { port, initialPath, paths, routes, httpsDevServer, sites, hosts } = skuContext;
21
21
  const environment = resolveEnvironment({
22
22
  environment: environmentOption,
23
23
  skuContext,
@@ -53,7 +53,7 @@ export const webpackStartHandler = async ({ stats: statsOption, environment: env
53
53
  });
54
54
  const appHosts = getAppHosts(skuContext);
55
55
  let devServerMiddleware = null;
56
- if (useDevServerMiddleware) {
56
+ if (paths.devServerMiddleware) {
57
57
  devServerMiddleware = (await import(paths.devServerMiddleware)).default;
58
58
  }
59
59
  const devServerConfig = {
@@ -1,8 +1,10 @@
1
1
  import { Command } from 'commander';
2
2
  import { statsOption } from '../../options/stats.option.js';
3
+ import { listUrlsOption } from '../../options/list-urls.js';
3
4
  export const startSsrCommand = new Command('start-ssr')
4
5
  .description('Start the sku development server for a server-rendered application.')
5
6
  .addOption(statsOption)
7
+ .addOption(listUrlsOption)
6
8
  .action(async (options) => {
7
9
  const { startSsrAction } = await import('./start-ssr.action.js');
8
10
  await startSsrAction(options);
@@ -14,7 +14,7 @@ import { openBrowser } from '../../../openBrowser.js';
14
14
  import createServerManager from '../../../services/serverManager.js';
15
15
  import { watchVocabCompile } from '../../../services/vocab/runVocab.js';
16
16
  import { configureProject, validatePeerDeps, } from '../../../utils/configure.js';
17
- import { requireFromCwd } from '@sku-lib/utils';
17
+ import { printUrls, requireFromCwd } from '@sku-lib/utils';
18
18
  const log = debug('sku:start-ssr');
19
19
  const hot = process.env.SKU_HOT !== 'false';
20
20
  const pluginName = 'sku-start-ssr';
@@ -71,7 +71,11 @@ export const webpackStartSsrHandler = async ({ stats: statsOption, skuContext, }
71
71
  const webpackDevServerUrl = `${proto}://${appHosts?.[0]}:${clientPort}`;
72
72
  console.log();
73
73
  console.log(chalk.blue(`Starting the webpack dev server on ${chalk.underline(webpackDevServerUrl)}`));
74
- console.log(chalk.blue(`Starting the SSR development server on ${chalk.underline(serverUrl)}`));
74
+ printUrls(skuContext.listUrls ? appHosts : [appHosts[0]], {
75
+ https: httpsDevServer,
76
+ initialPath,
77
+ port: serverPort,
78
+ });
75
79
  console.log();
76
80
  const onServerDone = once((err, stats) => {
77
81
  if (err) {
@@ -17,7 +17,7 @@ export const middlewarePlugin = (skuContext) => ({
17
17
  }
18
18
  // We need to start loading the devMiddleware before Vite's middleware runs.
19
19
  // Trying to lazy load it after Vite's middleware causes the Vite 404 middleware to take over the requests because this hook is run async.
20
- if (skuContext.useDevServerMiddleware) {
20
+ if (skuContext.paths.devServerMiddleware) {
21
21
  log('Using dev server middleware at %s', skuContext.paths.devServerMiddleware);
22
22
  const devServerMiddleware = (await import(skuContext.paths.devServerMiddleware)).default;
23
23
  if (devServerMiddleware && typeof devServerMiddleware === 'function') {
@@ -24,7 +24,7 @@ import { resolvePolyfills } from '../../../utils/resolvePolyfills.js';
24
24
  const require = createRequire(import.meta.url);
25
25
  const __dirname = dirname(fileURLToPath(import.meta.url));
26
26
  const makeWebpackConfig = ({ clientPort, serverPort, isDevServer = false, hot = false, isStartScript = false, stats, skuContext, }) => {
27
- const { paths, webpackDecorator, polyfills, supportedBrowsers, displayNamesProd, cspEnabled, cspExtraScriptSrcHosts, httpsDevServer, useDevServerMiddleware, rootResolution, skipPackageCompatibilityCompilation, externalizeNodeModules, sourceMapsProd, } = skuContext;
27
+ const { paths, webpackDecorator, polyfills, supportedBrowsers, displayNamesProd, cspEnabled, cspExtraScriptSrcHosts, httpsDevServer, rootResolution, skipPackageCompatibilityCompilation, externalizeNodeModules, sourceMapsProd, } = skuContext;
28
28
  const isProductionBuild = process.env.NODE_ENV === 'production';
29
29
  const webpackMode = isProductionBuild ? 'production' : 'development';
30
30
  const vocabOptions = getVocabConfig(skuContext);
@@ -226,7 +226,7 @@ const makeWebpackConfig = ({ clientPort, serverPort, isDevServer = false, hot =
226
226
  extraHosts: cspExtraScriptSrcHosts,
227
227
  }),
228
228
  __SKU_DEV_MIDDLEWARE_PATH__: JSON.stringify(isDevServer ? paths.devServerMiddleware : false),
229
- __SKU_DEV_MIDDLEWARE_ENABLED__: JSON.stringify(isDevServer ? useDevServerMiddleware : false),
229
+ __SKU_DEV_MIDDLEWARE_ENABLED__: JSON.stringify(isDevServer ? Boolean(paths.devServerMiddleware) : false),
230
230
  __SKU_DEV_HTTPS__: JSON.stringify(isDevServer ? httpsDevServer : false),
231
231
  }),
232
232
  new SkuWebpackPlugin({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sku",
3
- "version": "15.1.0",
3
+ "version": "15.2.0",
4
4
  "description": "Front-end development toolkit, powered by Webpack, Babel, Vanilla Extract and Jest",
5
5
  "types": "./dist/index.d.ts",
6
6
  "bin": {