mirror of
https://github.com/cypress-io/cypress.git
synced 2026-02-25 10:30:39 -06:00
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
const path = require('path')
|
|
const { startDevServer } = require('@cypress/webpack-dev-server')
|
|
const tryLoadWebpackConfig = require('../utils/tryLoadWebpackConfig')
|
|
const { getLegacyDevServer } = require('../utils/legacy-setup-dev-server')
|
|
|
|
/** @type {(config: Cypress.PluginConfigOptions, path: string) => string} */
|
|
function normalizeWebpackPath (config, webpackConfigPath) {
|
|
return path.isAbsolute(webpackConfigPath)
|
|
? webpackConfigPath
|
|
: path.resolve(config.projectRoot, webpackConfigPath)
|
|
}
|
|
/**
|
|
* Injects dev-server based on the webpack config file.
|
|
*
|
|
* **Important:** `webpackFilename` path is relative to the project root (cypress.config.{ts|js} location)
|
|
* @type {(on: Cypress.PluginEvents, config: Cypress.PluginConfigOptions, options: { webpackFilename: string }) => Cypress.PluginConfigOptions}
|
|
*/
|
|
function devServer (cypressDevServerConfig, { webpackFilename }) {
|
|
const webpackConfig = tryLoadWebpackConfig(normalizeWebpackPath(cypressDevServerConfig.config, webpackFilename))
|
|
|
|
if (!webpackConfig) {
|
|
throw new Error(`Can not load webpack config from path ${webpackFilename}.`)
|
|
}
|
|
|
|
return startDevServer({
|
|
options: cypressDevServerConfig,
|
|
webpackConfig,
|
|
})
|
|
}
|
|
|
|
// Legacy signature
|
|
module.exports = getLegacyDevServer(devServer, (config) => {
|
|
config.env.reactDevtools = true
|
|
|
|
return config
|
|
})
|
|
|
|
// New signature
|
|
module.exports.devServer = devServer
|