4.7.8 • Published 5 years ago

@sharyn/cli v4.7.8

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

🌹 @sharyn/cli

npm

This package provides CLI tasks to use as your NPM scripts.

🌹 Install

npx install-peerdeps -o -Y @sharyn/cli-peer-deps && npx install-peerdeps -o -Y -d @sharyn/cli-peer-devdeps && yarn add @sharyn/cli

🌹 Usage

In your package.json, add the following scripts:

  "scripts": {
    "start": "sharyn dev",
    "ssr-only": "sharyn dev-ssr-only",
    "no-ssr": "sharyn dev-no-ssr",
    "local-prod": "sharyn local-prod",
    "lint": "sharyn lint",
    "test": "sharyn test",
    "stats": "sharyn stats",
    "heroku-postbuild": "sharyn build-prod"
  },

And if you have Husky:

  "husky": {
    "hooks": {
      "pre-commit": "sharyn lint-test"
    }
  },

🌹 Tasks

dev

Runs sequencially:

  • If a docker-compose.yml file is present:
    • docker-compose up -d
  • If a knex-config.js file is present at src/_db/knex-config.js or provided via @sharyn/db:
    • until docker run --rm --link db:pg --net sharyn-net postgres:latest pg_isready -U postgres -h pg; do sleep 1; done
    • knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest
    • If a src/_db/seeds folder is present:
      • knex --knexfile [path-to-knex-config.js] --cwd . seed:run
  • rimraf dist/js/bundle.js

Then runs in parallel:

  • nodemon -w src -i dist -x "babel-node src/_server/server.js"
  • webpack-dev-server --mode=development --progress --hot [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed]

dev-ssr-only

Runs sequencially:

  • If a docker-compose.yml file is present:
    • docker-compose up -d
  • If a knex-config.js file is present at src/_db/knex-config.js or provided via @sharyn/db:
    • until docker run --rm --link db:pg --net sharyn-net postgres:latest pg_isready -U postgres -h pg; do sleep 1; done
    • knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest
    • If a src/_db/seeds folder is present:
      • knex --knexfile [path-to-knex-config.js] --cwd . seed:run
  • cross-env SSR_ONLY=true nodemon -w src -i dist -x "babel-node src/_server/server.js"

dev-no-ssr

Runs sequencially:

  • If a docker-compose.yml file is present:
    • docker-compose up -d
  • If a knex-config.js file is present at src/_db/knex-config.js or provided via @sharyn/db:
    • until docker run --rm --link db:pg --net sharyn-net postgres:latest pg_isready -U postgres -h pg; do sleep 1; done
    • knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest
    • If a src/_db/seeds folder is present:
      • knex --knexfile [path-to-knex-config.js] --cwd . seed:run
  • rimraf dist/js/bundle.js

Then runs in parallel:

  • cross-env NO_SSR=true nodemon -w src -i dist -x "babel-node src/_server/server.js"
  • webpack-dev-server --mode=development --progress --hot [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed]

local-prod

Runs sequencially:

  • If a docker-compose.yml file is present:
    • docker-compose up -d
  • If a knex-config.js file is present at src/_db/knex-config.js or provided via @sharyn/db:
    • until docker run --rm --link db:pg --net sharyn-net postgres:latest pg_isready -U postgres -h pg; do sleep 1; done
    • knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest
    • If a src/_db/seeds folder is present:
      • knex --knexfile [path-to-knex-config.js] --cwd . seed:run
  • rimraf lib dist/js/bundle.js
  • cross-env NODE_ENV=production webpack --mode=production --progress [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed]
  • babel src -d lib
  • If a Procfile file is present:
    • cross-env NODE_ENV=production heroku local
  • If not:
    • node lib/_server/server.js

build-prod

Runs sequencially:

  • rimraf lib dist/js/bundle.js
  • cross-env NODE_ENV=production webpack --mode=production --progress [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed]
  • babel src -d lib

migrate-db

Runs knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest

With [path-to-knex-config.js] being src/_db/knex-config.js or the one provided by @sharyn/db

Useful for the release command in Heroku's Procfile or on its own during local development.

lint

Runs sequencially:

  • eslint src
  • flow

test

Runs sequencially:

  • If a docker-compose.yml file is present:
    • If a Docker process is found matching the db-test name:
      • docker rm -f [db-test-id]
    • docker-compose up -d db-test
  • If a knex-config.js file is present at src/_db/knex-config.js or provided via @sharyn/db:
    • until docker run --rm --link db-test:pg --net sharyn-net postgres:latest pg_isready -U postgres -h pg; do sleep 1; done
    • cross-env NODE_ENV=test knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest
  • jest --testMatch **/*.unit.test.js [--globalSetup ./src/_testing/global-setup.js --globalTeardown ./src/_testing/global-teardown.js if these files exist]
  • cross-env NODE_ENV=production webpack --mode=production --progress [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed]
  • jest --preset jest-puppeteer --testMatch **/*.e2e.test.js --runInBand [--globalSetup ./src/_testing/global-setup.js --globalTeardown ./src/_testing/global-teardown.js if these files exist]

lint-test

Runs sequencially:

  • eslint src
  • flow
  • If a docker-compose.yml file is present:
    • If a Docker process is found matching the db-test name:
      • docker rm -f [db-test-id]
    • docker-compose up -d db-test
  • If a knex-config.js file is present at src/_db/knex-config.js or provided via @sharyn/db:
    • until docker run --rm --link db-test:pg --net sharyn-net postgres:latest pg_isready -U postgres -h pg; do sleep 1; done
    • cross-env NODE_ENV=test knex --knexfile [path-to-knex-config.js] --cwd . migrate:latest
  • jest --testMatch **/*.unit.test.js [--globalSetup ./src/_testing/global-setup.js --globalTeardown ./src/_testing/global-teardown.js if these files exist]
  • cross-env NODE_ENV=production webpack --mode=production --progress [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed]
  • jest --preset jest-puppeteer --testMatch **/*.e2e.test.js --runInBand [--globalSetup ./src/_testing/global-setup.js --globalTeardown ./src/_testing/global-teardown.js if these files exist]

Useful as the precommit Git hook or on its own.

stats

  • cross-env NODE_ENV=production webpack --mode=production --progress --json [--config node_modules/[@]sharyn/webpack-config if [@]sharyn/webpack-config installed] > webpack-stats.json
4.7.8

5 years ago

4.7.7

5 years ago

4.7.6

5 years ago

4.7.5

5 years ago

4.7.4

5 years ago

4.7.3

5 years ago

4.7.2

5 years ago

4.7.1

5 years ago

4.7.0

5 years ago

4.6.3

5 years ago

4.6.2

5 years ago

4.6.1

6 years ago

4.6.0

6 years ago

4.5.2

6 years ago

4.5.1

6 years ago

4.5.0

6 years ago

4.4.0

6 years ago

4.3.0

6 years ago

4.2.0

6 years ago

4.1.0

6 years ago

4.0.8

6 years ago

4.0.7

6 years ago

4.0.6

6 years ago

4.0.5

6 years ago

4.0.4

6 years ago

4.0.3

6 years ago

4.0.2

6 years ago

4.0.1

6 years ago

4.0.0

6 years ago

3.3.5

6 years ago

3.3.4

6 years ago

3.3.3

6 years ago

3.3.1

6 years ago

3.3.0

6 years ago

3.2.3

6 years ago

3.2.2

6 years ago

3.2.1

6 years ago

3.2.0

6 years ago

3.1.6

6 years ago

3.1.5

6 years ago

3.1.4

6 years ago

3.1.3

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.16.1

6 years ago

2.16.0

6 years ago

2.15.2

6 years ago

2.15.1

6 years ago

2.15.0

6 years ago

2.14.1

6 years ago

2.14.0

6 years ago

2.13.2

6 years ago

2.13.1

6 years ago

2.13.0

6 years ago

2.12.0

6 years ago

2.11.0

6 years ago

2.11.0-0

6 years ago

2.10.0

6 years ago

2.9.1

6 years ago

2.9.0

6 years ago

2.8.4

6 years ago

2.8.3

6 years ago

2.8.2

6 years ago

2.8.1

6 years ago

2.8.0

6 years ago

2.7.3

6 years ago

2.7.2

6 years ago

2.7.1

6 years ago

2.7.0

6 years ago

2.6.0

6 years ago

2.5.3

6 years ago

2.5.1

6 years ago

2.5.0

6 years ago

2.4.0

6 years ago

2.3.3

6 years ago

2.3.2

6 years ago

2.3.1

6 years ago

2.3.0

6 years ago

2.2.0

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.0

6 years ago

1.9.1

6 years ago

1.9.0

6 years ago

1.8.0

6 years ago

1.7.2

6 years ago

1.7.1

6 years ago

1.7.0

6 years ago

1.6.8

6 years ago

1.6.7

6 years ago

1.6.6

6 years ago

1.6.5

6 years ago

1.6.4

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.3

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.7

6 years ago

1.4.6

6 years ago

1.4.5

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.0

6 years ago

1.3.0

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.0

6 years ago

0.2.5

6 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago