{
  "name": "<%= app %>",
  "version": "0.0.1",
  "main": "src/<%= app %>.js",
  "scripts": {
    <% if (stack === "client") { %>
      <% if (!clientBundler) { %>      
        "test": "gulp client.unit_test",
        "build-dist": "gulp client.build:dist",
        "start": "gulp client.watch",
        "start-client": "gulp client.watch",
        "start-dist": "aliv --root client/dist --port 3001",
        "dev": "gulp client.watch",

      <% } else if (clientBundler === "webpack") { %>
        "build-dist": "webpack --config webpack.config.prod.js -p",
        "start": "webpack-dev-server --progress --config webpack.config.dev.js --content-base client/dev/",
        "start-client": "webpack-dev-server --progress --config webpack.config.dev.js --content-base client/dev/",
        "start-dist": "aliv --root client/dist --port 3001",
        "dev": "webpack-dev-server --progress --config webpack.config.dev.js --content-base client/dev/",

      <% } else if (clientBundler === "parcel") { %>
        "test": "gulp client.unit_test",
        "build-dist": "parcel build client/dev/index.html --out-dir client/dev && gulp client.build:dist",
        "start": "parcel client/dev/index.html --out-dir client/dev",
        "start-client": "parcel client/dev/index.html --out-dir client/dev",
        "start-dist": "aliv --root client/dist --port 3001",
        "dev": "parcel client/dev/index.html --out-dir client/dev",
      <% } %>
    <% } else if (stack === "server") { %>
      <% if (server === "node") { %>
        "start-server": "nodemon ./server/index --watch server",
        <% if (usesTypescript) { %>
          "dev": "tsc && npm run start-server",
        <% } else { %>
          "dev": "npm run start-server",
        <% } %>

        <% if (testsSeparated) { %>
          "test-server": "mocha 'tests/server/**/*_test.js' --recursive --check-leaks --reporter min --compilers js:babel-register",
        <% } else { %>
          "test-server": "mocha 'server/**/*_test.js' --recursive --check-leaks --reporter min --compilers js:babel-register",
        <% } %>
      <% } %>

      <% if (server === "go") { %>
        "start-server": "go run server/main.go",
        "dev": "npm run start-server",
      <% } %>      
    <% } else if (stack === "fullstack") { %>
      <% if (server === "node") { %>
        "start-server": "node server/index",
        "start-client": "webpack-dev-server --progress --config webpack.config.dev.js --content-base client/dev/",
        "build-dist": "webpack --config webpack.config.prod.js -p",
        <% if (usesTypescript) { %>
          "dev": "tsc && concurrently \"nodemon ./server/index --watch server\" \"npm run start-client\"",
        <% } else { %>
          "dev": "concurrently \"nodemon ./server/index --watch server\" \"npm run start-client\"",
        <% } %>

        <% if (testsSeparated) { %>
          "test-server": "mocha 'tests/server/**/*_test.js' --recursive --check-leaks --reporter min --compilers js:babel-register",
        <% } else { %>
          "test-server": "mocha 'server/**/*_test.js' --recursive --check-leaks --reporter min --compilers js:babel-register",
        <% } %>
      <% } %>

      <% if (server === "go") { %>
        "start-server": "go run server/main.go",
        "start-client": "webpack-dev-server --progress --config webpack.config.dev.js --content-base client/dev/",
        "build-dist": "webpack --config webpack.config.prod.js -p",
        "dev": "concurrently \"npm run start-server\" \" npm run start-client \"",
      <% } %>
    <% } %>
  "noop": "echo 'noop'"
  },
  "dependencies": {
    <% if (usesTypescript) {%>
      "typescript": "^2.8.3",
    <% } %>

    <% if (stack !== "client" && (stack !== "server" && server === "go")) { %>
      "bluebird": "^3.3.4",
      <% if (nodeWebFrameworkServer === "express") { %>
        "body-parser": "^1.5.0",
        "express": "~4.14.0",
        "morgan": "^1.5.2",
        "compression": "^1.6.2",
        "helmet": "^2.1.1",
      <% } %>

      "nodemon": "^1.9.2",
      "mongoose": "^4.4.7",
    <% } %>

    <% if (client === "ng1") { %>
      "angular": "^1.6.10",
      "angular-route": "^1.6.10",
      "font-awesome": "^4.7.0",
      "jquery": "^3.3.1",
    <% } %>      

    <% if (client === "ng2") { %>
      "@angular/common": "^6.0.0",
      "@angular/compiler": "^6.0.0",
      "@angular/core": "^6.0.0",
      "@angular/forms": "^6.0.0",
      "@angular/http": "^6.0.0",
      "@angular/platform-browser": "^6.0.0",
      "@angular/platform-browser-dynamic": "^6.0.0",
      "@angular/router": "^6.0.0",
      "core-js": "^2.4.1",
      "zone.js": "^0.8.26",
      "reflect-metadata": "^0.1.12",
      "rxjs": "^6.1.0",
    <% } %>

    <% if (client === "vue2") { %>
      "vue": "^2.5.10",
      "vuex": "^3.0.1",
      "vue-router": "^3.0.1",
      "axios": "^0.18.0",
    <% } %>

    <% if (nodeWebFrameworkServer === "koa") { %>
      "koa": "^2.5.1",
      "koa-bodyparser": "^4.2.0",
      "koa-router": "^7.4.0",
      "koa-static": "^4.0.2",
      "koa-send": "^4.1.3",
    <% } %>

    <% if (secure && server === "node") { %>
      "spdy": "^3.4.4",
    <% } %>

    "babel-register": "^6.26.0",
    "babel-regenerator-runtime": "^6.5.0",
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.0",
    "babel-minify": "^0.4.1",
    "babel-preset-env": "^1.7.0",
    "babel-preset-minify": "^0.4.1",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",

    "lodash": "^4.6.1"
  },
  "devDependencies": {
    <% if (stack === "client" || stack === "fullstack") { %>
      "aliv": "^1.11.0",
      "gulp": "^4.0.0",
      "undertaker-forward-reference": "^1.0.2",
      "protractor": "^5.3.1",   
      "require-dir": "^1.0.0",
      "@types/node": "^6.0.45",

      <% if (client === "ng1") { %>
        "angular-mocks": "^1.6.10",
        "gulp-angular-embed-templates": "^2.3.0",
        "gulp-nginclude": "^0.4.8",
      <% } %> 

      <% if (client === "ng2") { %>
        "angular2-template-loader": "^0.6.0",
      <% } %>  

      <% if (client === "vue2") { %>
        "vue-jest": "^2.6.0",
        "vue-loader": "^15.2.4",
        "vue-server-renderer": "^2.5.16",
        "vue-style-loader": "^4.1.0",
        "vue-template-compiler": "^2.5.16",
        "vue-html-loader": "^1.2.4",
      <% } %>  

      <% if (stylePreprocessor === "less") { %>
        "gulp-less": "^3.1.0",
      <% } %>
      
      <% if (stylePreprocessor === "sass") { %>
        "gulp-sass": "^2.3.2",
      <% } %>

      <% if (clientBundler === "webpack") { %>
        "ts-loader": "^4.3.0",
        "awesome-typescript-loader": "^3.0.4",
        "extract-text-webpack-plugin": "2.0.0-beta.5",
        "babel-loader": "^7.1.4",
        "mini-css-extract-plugin": "^0.4.0",
        "css-loader": "^0.26.1",
        "less-loader": "^4.1.0",
        "sass-loader": "^7.0.3",
        "node-sass": "^4.9.3",
        "file-loader": "^1.1.11",
        "html-loader": "^0.4.4",
        "null-loader": "^0.1.1",
        "raw-loader": "^0.5.1",
        "html-webpack-plugin": "^3.2.0",
        "style-loader": "^0.13.1",
        "webpack": "^4.8.3",
        "webpack-merge": "^3.0.0",
        "webpack-cli": "^2.1.3",
        "webpack-dev-server": "^3.1.4",
        "url-loader": "^1.0.1",
        "copy-webpack-plugin": "^4.5.1",
        "clean-webpack-plugin": "0.1.19",
        "uglifyjs-webpack-plugin": "^1.2.5",
      <% } %>

      <% if (clientBundler !== "webpack" && !stack === "server") { %>
        "gulp-babel": "^7.0.1",
        "gulp-concat": "^2.4.3",
        "gulp-coveralls": "^0.1.3",
        "gulp-typescript": "~4.0.2",
        "gulp-clean-css": "^2.0.3",
        "gulp-rename": "^1.2.0",
        "gulp-uglify": "^3.0.0",
        "gulp-rev": "^7.1.2",
        "gulp-usemin": "^0.3.24",
        "gulp-htmlmin": "^2.0.0",
        "gulp-imagemin": "^3.0.1",
        "gulp-util": "^3.0.3",
      <% } %>

      <% if (clientBundler === "parcel") { %>
        "parcel-bundler": "^1.8.1",
      <% } %>
    
      "jasmine-core": "^2.2.0",
      "karma": "^1.3.0",
      "karma-jasmine": "^1.0.2",
      "karma-chrome-launcher": "^2.0.0",
      "karma-coverage": "^1.1.1",
      "karma-firefox-launcher": "^1.0.0",
      "karma-ie-launcher": "^1.0.0",
      "karma-ng-html2js-preprocessor": "^1.0.0",
      "karma-opera-launcher": "^1.0.0",
      "karma-safari-launcher": "^1.0.0",
      "karma-ng-html2js-preprocessor": "^0.1.2",

      "mocha": "^2.4.5",
      "chai": "^3.5.0",
      "coveralls": "^2.11.2",
      "istanbul": "^0.4.4",
      "concurrently": "^2.0.0",
    <% } else if (stack === "server") { %>
      <% if (server === "node") { %>
        "mocha": "^2.4.5",
        "chai": "^3.5.0",
        "coveralls": "^2.11.2",
        "istanbul": "^0.4.4",
        "concurrently": "^2.0.0",
      <% } %>
    <% } %>
    "del": "^2.2.1"
  },
  "repository": {
    "type": "git",
    "url": "https://<%= repoHostUrl %>/<%= userNameSpace %>/<%= app %>.git"
  },
  "author": "<%= username %>",
  "license": "MIT",
  "bugs": {
    "url": "https://<%= repoHostUrl %>/<%= userNameSpace %>/<%= app %>/issues"
  },
  "homepage": "https://<%= repoHostUrl %>/<%= userNameSpace %>/<%= app %>",
  "engines": {
    "node": ">=9.0.0"
  }
}
