export function webpackCliTask()

in packages/just-scripts/src/tasks/webpackCliTask.ts [37:71]


export function webpackCliTask(options: WebpackCliTaskOptions = {}): TaskFunction {
  const webpackCliCmd = resolve('webpack-cli/bin/cli.js');

  if (!webpackCliCmd) {
    throw new Error('cannot find webpack-cli, please install it');
  }

  return function webpackCli() {
    logger.info(`Running webpack-cli as a node process`);

    const args = [
      ...(options && options.nodeArgs ? options.nodeArgs : []),
      webpackCliCmd,
      ...(options && options.webpackCliArgs ? options.webpackCliArgs : []),
    ];

    let configPath = findWebpackConfig('webpack.config.js');

    if (configPath) {
      options.env = { ...options.env, ...(configPath.endsWith('.ts') && getTsNodeEnv(options.tsconfig, options.transpileOnly)) };
    }

    if (options.webpackCliArgs) {
      const configIndex = options.webpackCliArgs.indexOf('--config');
      const configPathAvailable = configIndex > -1 && options.webpackCliArgs.length > configIndex + 2;
      if (configPathAvailable) {
        configPath = options.webpackCliArgs[configIndex + 1];
      }
    }

    logger.info(`webpack-cli arguments: ${process.execPath} ${args.join(' ')}`);

    return spawn(process.execPath, args, { stdio: 'inherit', env: options.env });
  };
}