'use strict'

require('./check-versions')()

process.env.NODE_ENV = 'production'

const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
var connect = require('connect');
var serveStatic = require('serve-static')

const spinner = ora('building for production...')
spinner.start()

rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
  if (err) throw err
  webpack(webpackConfig, function (err, stats) {
    spinner.stop()
    if (err) throw err
    process.stdout.write(stats.toString({
      colors: true,
      modules: false,
      children: false,
      chunks: false,
      chunkModules: false
    }) + '\n\n')

    console.log(chalk.cyan('  Build complete.\n'))
    console.log(chalk.yellow(
      '  Tip: built files are meant to be served over an HTTP server.\n' +
      '  Opening index.html over file:// won\'t work.\n'
    ))
    // for script in package.json -  "build:preview"
    if (process.env.npm_config_preview) {
          const port = 8080
          const host = "http://localhost:" + port
          const basePath = config.build.assetsPublicPath
          const app = connect()

          app.use(basePath, serveStatic('./dist', {
              'index': ['index.html', '/']
          }))

          app.listen(port, function () {
              console.log(chalk.green(`> Listening at  http://localhost:${port}${basePath}`))
          });
    }
  })
})
