From 41b4e65d30a4f775aa45868dcec3516e6cca0fd6 Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 29 Oct 2016 17:50:09 -0400 Subject: [PATCH 01/31] moving to packages --- .babelrc => packages/kyt-core/.babelrc | 0 .editorconfig => packages/kyt-core/.editorconfig | 0 .eslintignore => packages/kyt-core/.eslintignore | 0 .eslintrc.json => packages/kyt-core/.eslintrc.json | 0 .gitignore => packages/kyt-core/.gitignore | 0 .npmignore => packages/kyt-core/.npmignore | 0 .travis.yml => packages/kyt-core/.travis.yml | 0 {__mocks__ => packages/kyt-core/__mocks__}/chokidar.js | 0 {__mocks__ => packages/kyt-core/__mocks__}/eslint.js | 0 {__mocks__ => packages/kyt-core/__mocks__}/express.js | 0 {__mocks__ => packages/kyt-core/__mocks__}/nodemon.js | 0 {__mocks__ => packages/kyt-core/__mocks__}/shelljs.js | 0 {cli => packages/kyt-core/cli}/__tests__/.eslintrc | 0 {cli => packages/kyt-core/cli}/__tests__/index.test.js | 0 {cli => packages/kyt-core/cli}/__tests__/logger.test.js | 0 {cli => packages/kyt-core/cli}/actions/__tests__/.eslintrc | 0 {cli => packages/kyt-core/cli}/actions/__tests__/build.test.js | 0 {cli => packages/kyt-core/cli}/actions/__tests__/dev.test.js | 0 {cli => packages/kyt-core/cli}/actions/__tests__/lint.test.js | 0 .../kyt-core/cli}/actions/__tests__/lintStyle.test.js | 0 {cli => packages/kyt-core/cli}/actions/__tests__/proto.test.js | 0 {cli => packages/kyt-core/cli}/actions/__tests__/start.test.js | 0 {cli => packages/kyt-core/cli}/actions/build.js | 0 {cli => packages/kyt-core/cli}/actions/dev.js | 0 {cli => packages/kyt-core/cli}/actions/lint.js | 0 {cli => packages/kyt-core/cli}/actions/lintStyle.js | 0 {cli => packages/kyt-core/cli}/actions/proto.js | 0 {cli => packages/kyt-core/cli}/actions/setup.js | 0 {cli => packages/kyt-core/cli}/actions/start.js | 0 {cli => packages/kyt-core/cli}/actions/test.js | 0 {cli => packages/kyt-core/cli}/commands.js | 0 {cli => packages/kyt-core/cli}/index.js | 0 {cli => packages/kyt-core/cli}/logger.js | 0 {config => packages/kyt-core/config}/.eslintrc.base.json | 0 {config => packages/kyt-core/config}/.stylelintrc.base.json | 0 {config => packages/kyt-core/config}/__tests__/.eslintrc | 0 {config => packages/kyt-core/config}/__tests__/babel.test.js | 0 {config => packages/kyt-core/config}/__tests__/jest.test.js | 0 .../kyt-core/config}/__tests__/kyt.user.config.test.js | 0 {config => packages/kyt-core/config}/babel.js | 0 {config => packages/kyt-core/config}/jest.js | 0 {config => packages/kyt-core/config}/user/.eslintrc.base.json | 0 {config => packages/kyt-core/config}/user/.kyt-editorconfig | 0 {config => packages/kyt-core/config}/user/.kyt-gitignore | 0 {config => packages/kyt-core/config}/user/.stylelintrc.json | 0 {config => packages/kyt-core/config}/user/kyt.config.js | 0 {config => packages/kyt-core/config}/webpack.base.js | 0 {config => packages/kyt-core/config}/webpack.dev.client.js | 0 {config => packages/kyt-core/config}/webpack.dev.server.js | 0 {config => packages/kyt-core/config}/webpack.prod.client.js | 0 {config => packages/kyt-core/config}/webpack.prod.server.js | 0 {config => packages/kyt-core/config}/webpack.proto.js | 0 {e2e_tests => packages/kyt-core/e2e_tests}/jest.config.json | 0 {e2e_tests => packages/kyt-core/e2e_tests}/pkg.json | 0 {e2e_tests => packages/kyt-core/e2e_tests}/tests/cli.test.js | 0 package.json => packages/kyt-core/package.json | 0 {prototype => packages/kyt-core/prototype}/index.html | 0 {utils => packages/kyt-core/utils}/__mocks__/buildConfigs.js | 0 {utils => packages/kyt-core/utils}/__mocks__/ifPortIsFreeDo.js | 0 {utils => packages/kyt-core/utils}/__mocks__/paths.js | 0 {utils => packages/kyt-core/utils}/__mocks__/webpackCompiler.js | 0 {utils => packages/kyt-core/utils}/__tests__/.eslintrc | 0 {utils => packages/kyt-core/utils}/__tests__/buildConfigs.test.js | 0 .../kyt-core/utils}/__tests__/ifPortIsFreeDo.test.js | 0 {utils => packages/kyt-core/utils}/__tests__/kytConfig.test.js | 0 {utils => packages/kyt-core/utils}/__tests__/paths.test.js | 0 {utils => packages/kyt-core/utils}/__tests__/printAssets.test.js | 0 .../kyt-core/utils}/__tests__/webpackCompiler.test.js | 0 {utils => packages/kyt-core/utils}/buildConfigs.js | 0 {utils => packages/kyt-core/utils}/ifPortIsFreeDo.js | 0 {utils => packages/kyt-core/utils}/jest/file.stub.js | 0 {utils => packages/kyt-core/utils}/jest/preprocessor.js | 0 {utils => packages/kyt-core/utils}/jest/style.stub.js | 0 {utils => packages/kyt-core/utils}/kytConfig.js | 0 {utils => packages/kyt-core/utils}/paths.js | 0 {utils => packages/kyt-core/utils}/printAssets.js | 0 {utils => packages/kyt-core/utils}/psKill.js | 0 {utils => packages/kyt-core/utils}/webpackCompiler.js | 0 78 files changed, 0 insertions(+), 0 deletions(-) rename .babelrc => packages/kyt-core/.babelrc (100%) rename .editorconfig => packages/kyt-core/.editorconfig (100%) rename .eslintignore => packages/kyt-core/.eslintignore (100%) rename .eslintrc.json => packages/kyt-core/.eslintrc.json (100%) rename .gitignore => packages/kyt-core/.gitignore (100%) rename .npmignore => packages/kyt-core/.npmignore (100%) rename .travis.yml => packages/kyt-core/.travis.yml (100%) rename {__mocks__ => packages/kyt-core/__mocks__}/chokidar.js (100%) rename {__mocks__ => packages/kyt-core/__mocks__}/eslint.js (100%) rename {__mocks__ => packages/kyt-core/__mocks__}/express.js (100%) rename {__mocks__ => packages/kyt-core/__mocks__}/nodemon.js (100%) rename {__mocks__ => packages/kyt-core/__mocks__}/shelljs.js (100%) rename {cli => packages/kyt-core/cli}/__tests__/.eslintrc (100%) rename {cli => packages/kyt-core/cli}/__tests__/index.test.js (100%) rename {cli => packages/kyt-core/cli}/__tests__/logger.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/.eslintrc (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/build.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/dev.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/lint.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/lintStyle.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/proto.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/__tests__/start.test.js (100%) rename {cli => packages/kyt-core/cli}/actions/build.js (100%) rename {cli => packages/kyt-core/cli}/actions/dev.js (100%) rename {cli => packages/kyt-core/cli}/actions/lint.js (100%) rename {cli => packages/kyt-core/cli}/actions/lintStyle.js (100%) rename {cli => packages/kyt-core/cli}/actions/proto.js (100%) rename {cli => packages/kyt-core/cli}/actions/setup.js (100%) rename {cli => packages/kyt-core/cli}/actions/start.js (100%) rename {cli => packages/kyt-core/cli}/actions/test.js (100%) rename {cli => packages/kyt-core/cli}/commands.js (100%) rename {cli => packages/kyt-core/cli}/index.js (100%) rename {cli => packages/kyt-core/cli}/logger.js (100%) rename {config => packages/kyt-core/config}/.eslintrc.base.json (100%) rename {config => packages/kyt-core/config}/.stylelintrc.base.json (100%) rename {config => packages/kyt-core/config}/__tests__/.eslintrc (100%) rename {config => packages/kyt-core/config}/__tests__/babel.test.js (100%) rename {config => packages/kyt-core/config}/__tests__/jest.test.js (100%) rename {config => packages/kyt-core/config}/__tests__/kyt.user.config.test.js (100%) rename {config => packages/kyt-core/config}/babel.js (100%) rename {config => packages/kyt-core/config}/jest.js (100%) rename {config => packages/kyt-core/config}/user/.eslintrc.base.json (100%) rename {config => packages/kyt-core/config}/user/.kyt-editorconfig (100%) rename {config => packages/kyt-core/config}/user/.kyt-gitignore (100%) rename {config => packages/kyt-core/config}/user/.stylelintrc.json (100%) rename {config => packages/kyt-core/config}/user/kyt.config.js (100%) rename {config => packages/kyt-core/config}/webpack.base.js (100%) rename {config => packages/kyt-core/config}/webpack.dev.client.js (100%) rename {config => packages/kyt-core/config}/webpack.dev.server.js (100%) rename {config => packages/kyt-core/config}/webpack.prod.client.js (100%) rename {config => packages/kyt-core/config}/webpack.prod.server.js (100%) rename {config => packages/kyt-core/config}/webpack.proto.js (100%) rename {e2e_tests => packages/kyt-core/e2e_tests}/jest.config.json (100%) rename {e2e_tests => packages/kyt-core/e2e_tests}/pkg.json (100%) rename {e2e_tests => packages/kyt-core/e2e_tests}/tests/cli.test.js (100%) rename package.json => packages/kyt-core/package.json (100%) rename {prototype => packages/kyt-core/prototype}/index.html (100%) rename {utils => packages/kyt-core/utils}/__mocks__/buildConfigs.js (100%) rename {utils => packages/kyt-core/utils}/__mocks__/ifPortIsFreeDo.js (100%) rename {utils => packages/kyt-core/utils}/__mocks__/paths.js (100%) rename {utils => packages/kyt-core/utils}/__mocks__/webpackCompiler.js (100%) rename {utils => packages/kyt-core/utils}/__tests__/.eslintrc (100%) rename {utils => packages/kyt-core/utils}/__tests__/buildConfigs.test.js (100%) rename {utils => packages/kyt-core/utils}/__tests__/ifPortIsFreeDo.test.js (100%) rename {utils => packages/kyt-core/utils}/__tests__/kytConfig.test.js (100%) rename {utils => packages/kyt-core/utils}/__tests__/paths.test.js (100%) rename {utils => packages/kyt-core/utils}/__tests__/printAssets.test.js (100%) rename {utils => packages/kyt-core/utils}/__tests__/webpackCompiler.test.js (100%) rename {utils => packages/kyt-core/utils}/buildConfigs.js (100%) rename {utils => packages/kyt-core/utils}/ifPortIsFreeDo.js (100%) rename {utils => packages/kyt-core/utils}/jest/file.stub.js (100%) rename {utils => packages/kyt-core/utils}/jest/preprocessor.js (100%) rename {utils => packages/kyt-core/utils}/jest/style.stub.js (100%) rename {utils => packages/kyt-core/utils}/kytConfig.js (100%) rename {utils => packages/kyt-core/utils}/paths.js (100%) rename {utils => packages/kyt-core/utils}/printAssets.js (100%) rename {utils => packages/kyt-core/utils}/psKill.js (100%) rename {utils => packages/kyt-core/utils}/webpackCompiler.js (100%) diff --git a/.babelrc b/packages/kyt-core/.babelrc similarity index 100% rename from .babelrc rename to packages/kyt-core/.babelrc diff --git a/.editorconfig b/packages/kyt-core/.editorconfig similarity index 100% rename from .editorconfig rename to packages/kyt-core/.editorconfig diff --git a/.eslintignore b/packages/kyt-core/.eslintignore similarity index 100% rename from .eslintignore rename to packages/kyt-core/.eslintignore diff --git a/.eslintrc.json b/packages/kyt-core/.eslintrc.json similarity index 100% rename from .eslintrc.json rename to packages/kyt-core/.eslintrc.json diff --git a/.gitignore b/packages/kyt-core/.gitignore similarity index 100% rename from .gitignore rename to packages/kyt-core/.gitignore diff --git a/.npmignore b/packages/kyt-core/.npmignore similarity index 100% rename from .npmignore rename to packages/kyt-core/.npmignore diff --git a/.travis.yml b/packages/kyt-core/.travis.yml similarity index 100% rename from .travis.yml rename to packages/kyt-core/.travis.yml diff --git a/__mocks__/chokidar.js b/packages/kyt-core/__mocks__/chokidar.js similarity index 100% rename from __mocks__/chokidar.js rename to packages/kyt-core/__mocks__/chokidar.js diff --git a/__mocks__/eslint.js b/packages/kyt-core/__mocks__/eslint.js similarity index 100% rename from __mocks__/eslint.js rename to packages/kyt-core/__mocks__/eslint.js diff --git a/__mocks__/express.js b/packages/kyt-core/__mocks__/express.js similarity index 100% rename from __mocks__/express.js rename to packages/kyt-core/__mocks__/express.js diff --git a/__mocks__/nodemon.js b/packages/kyt-core/__mocks__/nodemon.js similarity index 100% rename from __mocks__/nodemon.js rename to packages/kyt-core/__mocks__/nodemon.js diff --git a/__mocks__/shelljs.js b/packages/kyt-core/__mocks__/shelljs.js similarity index 100% rename from __mocks__/shelljs.js rename to packages/kyt-core/__mocks__/shelljs.js diff --git a/cli/__tests__/.eslintrc b/packages/kyt-core/cli/__tests__/.eslintrc similarity index 100% rename from cli/__tests__/.eslintrc rename to packages/kyt-core/cli/__tests__/.eslintrc diff --git a/cli/__tests__/index.test.js b/packages/kyt-core/cli/__tests__/index.test.js similarity index 100% rename from cli/__tests__/index.test.js rename to packages/kyt-core/cli/__tests__/index.test.js diff --git a/cli/__tests__/logger.test.js b/packages/kyt-core/cli/__tests__/logger.test.js similarity index 100% rename from cli/__tests__/logger.test.js rename to packages/kyt-core/cli/__tests__/logger.test.js diff --git a/cli/actions/__tests__/.eslintrc b/packages/kyt-core/cli/actions/__tests__/.eslintrc similarity index 100% rename from cli/actions/__tests__/.eslintrc rename to packages/kyt-core/cli/actions/__tests__/.eslintrc diff --git a/cli/actions/__tests__/build.test.js b/packages/kyt-core/cli/actions/__tests__/build.test.js similarity index 100% rename from cli/actions/__tests__/build.test.js rename to packages/kyt-core/cli/actions/__tests__/build.test.js diff --git a/cli/actions/__tests__/dev.test.js b/packages/kyt-core/cli/actions/__tests__/dev.test.js similarity index 100% rename from cli/actions/__tests__/dev.test.js rename to packages/kyt-core/cli/actions/__tests__/dev.test.js diff --git a/cli/actions/__tests__/lint.test.js b/packages/kyt-core/cli/actions/__tests__/lint.test.js similarity index 100% rename from cli/actions/__tests__/lint.test.js rename to packages/kyt-core/cli/actions/__tests__/lint.test.js diff --git a/cli/actions/__tests__/lintStyle.test.js b/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js similarity index 100% rename from cli/actions/__tests__/lintStyle.test.js rename to packages/kyt-core/cli/actions/__tests__/lintStyle.test.js diff --git a/cli/actions/__tests__/proto.test.js b/packages/kyt-core/cli/actions/__tests__/proto.test.js similarity index 100% rename from cli/actions/__tests__/proto.test.js rename to packages/kyt-core/cli/actions/__tests__/proto.test.js diff --git a/cli/actions/__tests__/start.test.js b/packages/kyt-core/cli/actions/__tests__/start.test.js similarity index 100% rename from cli/actions/__tests__/start.test.js rename to packages/kyt-core/cli/actions/__tests__/start.test.js diff --git a/cli/actions/build.js b/packages/kyt-core/cli/actions/build.js similarity index 100% rename from cli/actions/build.js rename to packages/kyt-core/cli/actions/build.js diff --git a/cli/actions/dev.js b/packages/kyt-core/cli/actions/dev.js similarity index 100% rename from cli/actions/dev.js rename to packages/kyt-core/cli/actions/dev.js diff --git a/cli/actions/lint.js b/packages/kyt-core/cli/actions/lint.js similarity index 100% rename from cli/actions/lint.js rename to packages/kyt-core/cli/actions/lint.js diff --git a/cli/actions/lintStyle.js b/packages/kyt-core/cli/actions/lintStyle.js similarity index 100% rename from cli/actions/lintStyle.js rename to packages/kyt-core/cli/actions/lintStyle.js diff --git a/cli/actions/proto.js b/packages/kyt-core/cli/actions/proto.js similarity index 100% rename from cli/actions/proto.js rename to packages/kyt-core/cli/actions/proto.js diff --git a/cli/actions/setup.js b/packages/kyt-core/cli/actions/setup.js similarity index 100% rename from cli/actions/setup.js rename to packages/kyt-core/cli/actions/setup.js diff --git a/cli/actions/start.js b/packages/kyt-core/cli/actions/start.js similarity index 100% rename from cli/actions/start.js rename to packages/kyt-core/cli/actions/start.js diff --git a/cli/actions/test.js b/packages/kyt-core/cli/actions/test.js similarity index 100% rename from cli/actions/test.js rename to packages/kyt-core/cli/actions/test.js diff --git a/cli/commands.js b/packages/kyt-core/cli/commands.js similarity index 100% rename from cli/commands.js rename to packages/kyt-core/cli/commands.js diff --git a/cli/index.js b/packages/kyt-core/cli/index.js similarity index 100% rename from cli/index.js rename to packages/kyt-core/cli/index.js diff --git a/cli/logger.js b/packages/kyt-core/cli/logger.js similarity index 100% rename from cli/logger.js rename to packages/kyt-core/cli/logger.js diff --git a/config/.eslintrc.base.json b/packages/kyt-core/config/.eslintrc.base.json similarity index 100% rename from config/.eslintrc.base.json rename to packages/kyt-core/config/.eslintrc.base.json diff --git a/config/.stylelintrc.base.json b/packages/kyt-core/config/.stylelintrc.base.json similarity index 100% rename from config/.stylelintrc.base.json rename to packages/kyt-core/config/.stylelintrc.base.json diff --git a/config/__tests__/.eslintrc b/packages/kyt-core/config/__tests__/.eslintrc similarity index 100% rename from config/__tests__/.eslintrc rename to packages/kyt-core/config/__tests__/.eslintrc diff --git a/config/__tests__/babel.test.js b/packages/kyt-core/config/__tests__/babel.test.js similarity index 100% rename from config/__tests__/babel.test.js rename to packages/kyt-core/config/__tests__/babel.test.js diff --git a/config/__tests__/jest.test.js b/packages/kyt-core/config/__tests__/jest.test.js similarity index 100% rename from config/__tests__/jest.test.js rename to packages/kyt-core/config/__tests__/jest.test.js diff --git a/config/__tests__/kyt.user.config.test.js b/packages/kyt-core/config/__tests__/kyt.user.config.test.js similarity index 100% rename from config/__tests__/kyt.user.config.test.js rename to packages/kyt-core/config/__tests__/kyt.user.config.test.js diff --git a/config/babel.js b/packages/kyt-core/config/babel.js similarity index 100% rename from config/babel.js rename to packages/kyt-core/config/babel.js diff --git a/config/jest.js b/packages/kyt-core/config/jest.js similarity index 100% rename from config/jest.js rename to packages/kyt-core/config/jest.js diff --git a/config/user/.eslintrc.base.json b/packages/kyt-core/config/user/.eslintrc.base.json similarity index 100% rename from config/user/.eslintrc.base.json rename to packages/kyt-core/config/user/.eslintrc.base.json diff --git a/config/user/.kyt-editorconfig b/packages/kyt-core/config/user/.kyt-editorconfig similarity index 100% rename from config/user/.kyt-editorconfig rename to packages/kyt-core/config/user/.kyt-editorconfig diff --git a/config/user/.kyt-gitignore b/packages/kyt-core/config/user/.kyt-gitignore similarity index 100% rename from config/user/.kyt-gitignore rename to packages/kyt-core/config/user/.kyt-gitignore diff --git a/config/user/.stylelintrc.json b/packages/kyt-core/config/user/.stylelintrc.json similarity index 100% rename from config/user/.stylelintrc.json rename to packages/kyt-core/config/user/.stylelintrc.json diff --git a/config/user/kyt.config.js b/packages/kyt-core/config/user/kyt.config.js similarity index 100% rename from config/user/kyt.config.js rename to packages/kyt-core/config/user/kyt.config.js diff --git a/config/webpack.base.js b/packages/kyt-core/config/webpack.base.js similarity index 100% rename from config/webpack.base.js rename to packages/kyt-core/config/webpack.base.js diff --git a/config/webpack.dev.client.js b/packages/kyt-core/config/webpack.dev.client.js similarity index 100% rename from config/webpack.dev.client.js rename to packages/kyt-core/config/webpack.dev.client.js diff --git a/config/webpack.dev.server.js b/packages/kyt-core/config/webpack.dev.server.js similarity index 100% rename from config/webpack.dev.server.js rename to packages/kyt-core/config/webpack.dev.server.js diff --git a/config/webpack.prod.client.js b/packages/kyt-core/config/webpack.prod.client.js similarity index 100% rename from config/webpack.prod.client.js rename to packages/kyt-core/config/webpack.prod.client.js diff --git a/config/webpack.prod.server.js b/packages/kyt-core/config/webpack.prod.server.js similarity index 100% rename from config/webpack.prod.server.js rename to packages/kyt-core/config/webpack.prod.server.js diff --git a/config/webpack.proto.js b/packages/kyt-core/config/webpack.proto.js similarity index 100% rename from config/webpack.proto.js rename to packages/kyt-core/config/webpack.proto.js diff --git a/e2e_tests/jest.config.json b/packages/kyt-core/e2e_tests/jest.config.json similarity index 100% rename from e2e_tests/jest.config.json rename to packages/kyt-core/e2e_tests/jest.config.json diff --git a/e2e_tests/pkg.json b/packages/kyt-core/e2e_tests/pkg.json similarity index 100% rename from e2e_tests/pkg.json rename to packages/kyt-core/e2e_tests/pkg.json diff --git a/e2e_tests/tests/cli.test.js b/packages/kyt-core/e2e_tests/tests/cli.test.js similarity index 100% rename from e2e_tests/tests/cli.test.js rename to packages/kyt-core/e2e_tests/tests/cli.test.js diff --git a/package.json b/packages/kyt-core/package.json similarity index 100% rename from package.json rename to packages/kyt-core/package.json diff --git a/prototype/index.html b/packages/kyt-core/prototype/index.html similarity index 100% rename from prototype/index.html rename to packages/kyt-core/prototype/index.html diff --git a/utils/__mocks__/buildConfigs.js b/packages/kyt-core/utils/__mocks__/buildConfigs.js similarity index 100% rename from utils/__mocks__/buildConfigs.js rename to packages/kyt-core/utils/__mocks__/buildConfigs.js diff --git a/utils/__mocks__/ifPortIsFreeDo.js b/packages/kyt-core/utils/__mocks__/ifPortIsFreeDo.js similarity index 100% rename from utils/__mocks__/ifPortIsFreeDo.js rename to packages/kyt-core/utils/__mocks__/ifPortIsFreeDo.js diff --git a/utils/__mocks__/paths.js b/packages/kyt-core/utils/__mocks__/paths.js similarity index 100% rename from utils/__mocks__/paths.js rename to packages/kyt-core/utils/__mocks__/paths.js diff --git a/utils/__mocks__/webpackCompiler.js b/packages/kyt-core/utils/__mocks__/webpackCompiler.js similarity index 100% rename from utils/__mocks__/webpackCompiler.js rename to packages/kyt-core/utils/__mocks__/webpackCompiler.js diff --git a/utils/__tests__/.eslintrc b/packages/kyt-core/utils/__tests__/.eslintrc similarity index 100% rename from utils/__tests__/.eslintrc rename to packages/kyt-core/utils/__tests__/.eslintrc diff --git a/utils/__tests__/buildConfigs.test.js b/packages/kyt-core/utils/__tests__/buildConfigs.test.js similarity index 100% rename from utils/__tests__/buildConfigs.test.js rename to packages/kyt-core/utils/__tests__/buildConfigs.test.js diff --git a/utils/__tests__/ifPortIsFreeDo.test.js b/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js similarity index 100% rename from utils/__tests__/ifPortIsFreeDo.test.js rename to packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js diff --git a/utils/__tests__/kytConfig.test.js b/packages/kyt-core/utils/__tests__/kytConfig.test.js similarity index 100% rename from utils/__tests__/kytConfig.test.js rename to packages/kyt-core/utils/__tests__/kytConfig.test.js diff --git a/utils/__tests__/paths.test.js b/packages/kyt-core/utils/__tests__/paths.test.js similarity index 100% rename from utils/__tests__/paths.test.js rename to packages/kyt-core/utils/__tests__/paths.test.js diff --git a/utils/__tests__/printAssets.test.js b/packages/kyt-core/utils/__tests__/printAssets.test.js similarity index 100% rename from utils/__tests__/printAssets.test.js rename to packages/kyt-core/utils/__tests__/printAssets.test.js diff --git a/utils/__tests__/webpackCompiler.test.js b/packages/kyt-core/utils/__tests__/webpackCompiler.test.js similarity index 100% rename from utils/__tests__/webpackCompiler.test.js rename to packages/kyt-core/utils/__tests__/webpackCompiler.test.js diff --git a/utils/buildConfigs.js b/packages/kyt-core/utils/buildConfigs.js similarity index 100% rename from utils/buildConfigs.js rename to packages/kyt-core/utils/buildConfigs.js diff --git a/utils/ifPortIsFreeDo.js b/packages/kyt-core/utils/ifPortIsFreeDo.js similarity index 100% rename from utils/ifPortIsFreeDo.js rename to packages/kyt-core/utils/ifPortIsFreeDo.js diff --git a/utils/jest/file.stub.js b/packages/kyt-core/utils/jest/file.stub.js similarity index 100% rename from utils/jest/file.stub.js rename to packages/kyt-core/utils/jest/file.stub.js diff --git a/utils/jest/preprocessor.js b/packages/kyt-core/utils/jest/preprocessor.js similarity index 100% rename from utils/jest/preprocessor.js rename to packages/kyt-core/utils/jest/preprocessor.js diff --git a/utils/jest/style.stub.js b/packages/kyt-core/utils/jest/style.stub.js similarity index 100% rename from utils/jest/style.stub.js rename to packages/kyt-core/utils/jest/style.stub.js diff --git a/utils/kytConfig.js b/packages/kyt-core/utils/kytConfig.js similarity index 100% rename from utils/kytConfig.js rename to packages/kyt-core/utils/kytConfig.js diff --git a/utils/paths.js b/packages/kyt-core/utils/paths.js similarity index 100% rename from utils/paths.js rename to packages/kyt-core/utils/paths.js diff --git a/utils/printAssets.js b/packages/kyt-core/utils/printAssets.js similarity index 100% rename from utils/printAssets.js rename to packages/kyt-core/utils/printAssets.js diff --git a/utils/psKill.js b/packages/kyt-core/utils/psKill.js similarity index 100% rename from utils/psKill.js rename to packages/kyt-core/utils/psKill.js diff --git a/utils/webpackCompiler.js b/packages/kyt-core/utils/webpackCompiler.js similarity index 100% rename from utils/webpackCompiler.js rename to packages/kyt-core/utils/webpackCompiler.js From be356913b454070a8ce645443cba5ef512236a94 Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 30 Oct 2016 12:08:08 -0400 Subject: [PATCH 02/31] separating setup into kyt-cli; creating kyt-utils for shared utilities across packages --- packages/kyt-cli/.gitignore | 35 +++++++++++++++++++ .../cli/actions/setup.js | 9 +++-- packages/kyt-cli/cli/commands.js | 18 ++++++++++ .../config/__tests__/kyt.user.config.test.js | 0 .../config/user/.eslintrc.base.json | 0 .../config/user/.kyt-editorconfig | 0 .../config/user/.kyt-gitignore | 0 .../config/user/.stylelintrc.json | 0 .../config/user/kyt.config.js | 0 packages/kyt-cli/index.js | 14 ++++++++ packages/kyt-cli/package.json | 22 ++++++++++++ .../cli/actions/__tests__/build.test.js | 8 ++--- .../cli/actions/__tests__/dev.test.js | 6 ++-- .../cli/actions/__tests__/lint.test.js | 6 ++-- .../cli/actions/__tests__/lintStyle.test.js | 6 ++-- .../cli/actions/__tests__/proto.test.js | 4 +-- .../cli/actions/__tests__/start.test.js | 4 +-- packages/kyt-core/cli/actions/build.js | 4 +-- packages/kyt-core/cli/actions/dev.js | 4 +-- packages/kyt-core/cli/actions/lint.js | 4 +-- packages/kyt-core/cli/actions/lintStyle.js | 4 +-- packages/kyt-core/cli/actions/proto.js | 4 +-- packages/kyt-core/cli/actions/start.js | 2 +- packages/kyt-core/cli/actions/test.js | 2 +- packages/kyt-core/cli/commands.js | 11 ++---- packages/kyt-core/config/webpack.base.js | 2 +- .../kyt-core/config/webpack.dev.client.js | 2 +- .../kyt-core/config/webpack.dev.server.js | 2 +- .../kyt-core/config/webpack.prod.client.js | 2 +- .../kyt-core/config/webpack.prod.server.js | 2 +- packages/kyt-core/config/webpack.proto.js | 2 +- packages/kyt-core/package.json | 1 + .../utils/__tests__/ifPortIsFreeDo.test.js | 4 +-- .../utils/__tests__/kytConfig.test.js | 4 +-- .../utils/__tests__/printAssets.test.js | 4 +-- .../utils/__tests__/webpackCompiler.test.js | 4 +-- packages/kyt-core/utils/buildConfigs.js | 2 +- packages/kyt-core/utils/ifPortIsFreeDo.js | 2 +- packages/kyt-core/utils/kytConfig.js | 4 +-- packages/kyt-core/utils/printAssets.js | 2 +- packages/kyt-core/utils/webpackCompiler.js | 2 +- .../utils => kyt-utils}/__mocks__/paths.js | 0 .../__tests__/logger.test.js | 0 .../__tests__/paths.test.js | 0 .../{kyt-core/cli => kyt-utils}/logger.js | 0 packages/kyt-utils/package.json | 11 ++++++ .../{kyt-core/utils => kyt-utils}/paths.js | 0 47 files changed, 158 insertions(+), 61 deletions(-) create mode 100644 packages/kyt-cli/.gitignore rename packages/{kyt-core => kyt-cli}/cli/actions/setup.js (98%) create mode 100644 packages/kyt-cli/cli/commands.js rename packages/{kyt-core => kyt-cli}/config/__tests__/kyt.user.config.test.js (100%) rename packages/{kyt-core => kyt-cli}/config/user/.eslintrc.base.json (100%) rename packages/{kyt-core => kyt-cli}/config/user/.kyt-editorconfig (100%) rename packages/{kyt-core => kyt-cli}/config/user/.kyt-gitignore (100%) rename packages/{kyt-core => kyt-cli}/config/user/.stylelintrc.json (100%) rename packages/{kyt-core => kyt-cli}/config/user/kyt.config.js (100%) create mode 100755 packages/kyt-cli/index.js create mode 100644 packages/kyt-cli/package.json rename packages/{kyt-core/utils => kyt-utils}/__mocks__/paths.js (100%) rename packages/{kyt-core/cli => kyt-utils}/__tests__/logger.test.js (100%) rename packages/{kyt-core/utils => kyt-utils}/__tests__/paths.test.js (100%) rename packages/{kyt-core/cli => kyt-utils}/logger.js (100%) create mode 100644 packages/kyt-utils/package.json rename packages/{kyt-core/utils => kyt-utils}/paths.js (100%) diff --git a/packages/kyt-cli/.gitignore b/packages/kyt-cli/.gitignore new file mode 100644 index 000000000..bb2002aa8 --- /dev/null +++ b/packages/kyt-cli/.gitignore @@ -0,0 +1,35 @@ +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +node_modules + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + +# OS-specific temporary files +Thumbs.db +.DS_Store +cli-test diff --git a/packages/kyt-core/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js similarity index 98% rename from packages/kyt-core/cli/actions/setup.js rename to packages/kyt-cli/cli/actions/setup.js index 20713c875..4eeafba6e 100644 --- a/packages/kyt-core/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -4,7 +4,7 @@ const fs = require('fs'); const shell = require('shelljs'); const inquire = require('inquirer'); const simpleGit = require('simple-git')(); -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); const semver = require('semver'); const uniq = require('ramda').uniq; const { @@ -14,11 +14,12 @@ const { userKytConfigPath, userNodeModulesPath, userPackageJSONPath, -} = require('../../utils/paths')(); // eslint-disable-line import/newline-after-import +} = require('kyt-utils/paths')(); // eslint-disable-line import/newline-after-import // eslint-disable-next-line import/no-dynamic-require const kytPkg = require(path.join(__dirname, '../../package.json')); -module.exports = (config, flags, args) => { +module.exports = (flags, args) => { + console.log('WERE HERE', process.cwd()); const date = Date.now(); const tmpDir = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape const repoURL = args.repository || 'https://github.com/NYTimes/kyt-starter-universal.git'; @@ -166,6 +167,7 @@ module.exports = (config, flags, args) => { // Copy our user eslintrc into the user's root. const esLintPath = path.join(__dirname, '../../config/user/.eslintrc.base.json'); + console.log(esLintPath); if (shell.cp(esLintPath, linkedPath).code === 0) { logger.task(`Created ${eslintFileName} file`); } else { @@ -398,6 +400,7 @@ module.exports = (config, flags, args) => { }; try { + console.log('sucessfully in the function'); setupPrompt(); } catch (err) { bailProcess(err); diff --git a/packages/kyt-cli/cli/commands.js b/packages/kyt-cli/cli/commands.js new file mode 100644 index 000000000..0305a4903 --- /dev/null +++ b/packages/kyt-cli/cli/commands.js @@ -0,0 +1,18 @@ +const program = require('commander'); +const setupAction = require('./actions/setup'); + +const loadArgsAndDo = (action) => { + const args = program.args.filter(item => typeof item === 'object'); + const flags = program.args.filter(item => typeof item === 'string'); + action(flags, args[0]); +}; + + +program + .command('setup') + .description('Generate a project from a github url to get started.') + .option('-r, --repository [address]', 'Github repository address') + .action(() => loadArgsAndDo(setupAction)); + + +program.parse(process.argv); diff --git a/packages/kyt-core/config/__tests__/kyt.user.config.test.js b/packages/kyt-cli/config/__tests__/kyt.user.config.test.js similarity index 100% rename from packages/kyt-core/config/__tests__/kyt.user.config.test.js rename to packages/kyt-cli/config/__tests__/kyt.user.config.test.js diff --git a/packages/kyt-core/config/user/.eslintrc.base.json b/packages/kyt-cli/config/user/.eslintrc.base.json similarity index 100% rename from packages/kyt-core/config/user/.eslintrc.base.json rename to packages/kyt-cli/config/user/.eslintrc.base.json diff --git a/packages/kyt-core/config/user/.kyt-editorconfig b/packages/kyt-cli/config/user/.kyt-editorconfig similarity index 100% rename from packages/kyt-core/config/user/.kyt-editorconfig rename to packages/kyt-cli/config/user/.kyt-editorconfig diff --git a/packages/kyt-core/config/user/.kyt-gitignore b/packages/kyt-cli/config/user/.kyt-gitignore similarity index 100% rename from packages/kyt-core/config/user/.kyt-gitignore rename to packages/kyt-cli/config/user/.kyt-gitignore diff --git a/packages/kyt-core/config/user/.stylelintrc.json b/packages/kyt-cli/config/user/.stylelintrc.json similarity index 100% rename from packages/kyt-core/config/user/.stylelintrc.json rename to packages/kyt-cli/config/user/.stylelintrc.json diff --git a/packages/kyt-core/config/user/kyt.config.js b/packages/kyt-cli/config/user/kyt.config.js similarity index 100% rename from packages/kyt-core/config/user/kyt.config.js rename to packages/kyt-cli/config/user/kyt.config.js diff --git a/packages/kyt-cli/index.js b/packages/kyt-cli/index.js new file mode 100755 index 000000000..caf8bfdc7 --- /dev/null +++ b/packages/kyt-cli/index.js @@ -0,0 +1,14 @@ +#!/usr/bin/env node + +// This module has to be supported by old versions of node, so no ES6 +/* eslint-disable no-var, prefer-arrow-callback, prefer-template, no-console */ +var minNodeVersion = 6; + +// Make sure that the user has a compatible node version before loading the app. +if (Number(process.versions.node.split('.')[0]) < minNodeVersion) { + console.error('kyt requires Node v' + minNodeVersion + '+'); + console.info('Need to run multiple versions of node? Check out nvm'); + process.exit(1); +} + +require('./cli/commands'); diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json new file mode 100644 index 000000000..35e053a3c --- /dev/null +++ b/packages/kyt-cli/package.json @@ -0,0 +1,22 @@ +{ + "name": "kyt-cli", + "version": "0.0.0", + "description": "", + "main": "index.js", + "bin": { + "kyt-cli": "index.js" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "license": "Apache-2.0", + "dependencies": { + "commander": "^2.9.0", + "inquirer": "^1.2.2", + "kyt-utils": "file:../kyt-utils", + "ramda": "^0.22.1", + "semver": "^5.3.0", + "shelljs": "^0.7.5", + "simple-git": "^1.59.0" + } +} diff --git a/packages/kyt-core/cli/actions/__tests__/build.test.js b/packages/kyt-core/cli/actions/__tests__/build.test.js index bd23b2dbd..08b90db58 100644 --- a/packages/kyt-core/cli/actions/__tests__/build.test.js +++ b/packages/kyt-core/cli/actions/__tests__/build.test.js @@ -8,8 +8,8 @@ const shell = { }; jest.setMock('shelljs', shell); -jest.mock('../../../utils/paths'); -jest.mock('../../logger'); +jest.mock('kyt-utils/paths'); +jest.mock('kyt-utils/logger'); jest.mock('../../../utils/printAssets'); jest.mock('../../../utils/buildConfigs'); jest.mock('../../../utils/webpackCompiler'); @@ -18,10 +18,10 @@ global.process.exit = jest.fn(); const printAssets = require('../../../utils/printAssets'); const webpackCompiler = require('../../../utils/webpackCompiler'); -const logger = require('../../logger'); +const logger = require('kyt-utils/logger'); const build = require('../build'); const buildConfigs = require('../../../utils/buildConfigs'); -const { buildPath, publicBuildPath, publicSrcPath } = require('../../../utils/paths')(); +const { buildPath, publicBuildPath, publicSrcPath } = require('kyt-utils/paths')(); const submodules = mod => Object.keys(mod).map(key => mod[key]); diff --git a/packages/kyt-core/cli/actions/__tests__/dev.test.js b/packages/kyt-core/cli/actions/__tests__/dev.test.js index 55764ff88..8d8c73028 100644 --- a/packages/kyt-core/cli/actions/__tests__/dev.test.js +++ b/packages/kyt-core/cli/actions/__tests__/dev.test.js @@ -3,8 +3,8 @@ const assert = require('assert'); // jest.enableAutomock(); jest.mock('webpack-dev-middleware'); jest.mock('webpack-hot-middleware'); -jest.mock('../../logger'); -jest.mock('../../../utils/paths'); +jest.mock('kyt-utils/logger'); +jest.mock('kyt-utils/paths'); jest.mock('../../../utils/buildConfigs'); jest.mock('../../../utils/webpackCompiler'); jest.mock('express'); @@ -27,7 +27,7 @@ const chokidar = require('chokidar'); const nodemon = require('nodemon'); const devMiddleware = require('webpack-dev-middleware'); const express = require('express'); -const logger = require('../../logger'); +const logger = require('kyt-utils/logger'); const ifPortIsFreeDo = require('../../../utils/ifPortIsFreeDo'); const webpackCompiler = require('../../../utils/webpackCompiler'); const buildConfigs = require('../../../utils/buildConfigs'); diff --git a/packages/kyt-core/cli/actions/__tests__/lint.test.js b/packages/kyt-core/cli/actions/__tests__/lint.test.js index 901d302c5..814198343 100644 --- a/packages/kyt-core/cli/actions/__tests__/lint.test.js +++ b/packages/kyt-core/cli/actions/__tests__/lint.test.js @@ -4,8 +4,8 @@ jest.setMock('glob', { jest.setMock('path', { join: jest.fn().mockReturnValue('base filename'), }); -jest.mock('../../logger'); -jest.mock('../../../utils/paths'); +jest.mock('kyt-utils/logger'); +jest.mock('kyt-utils/paths'); jest.mock('shelljs', () => ( { @@ -18,7 +18,7 @@ jest.mock('shelljs', () => ( describe('lint', () => { global.process.exit = jest.fn(); - const logger = require('../../logger'); + const logger = require('kyt-utils/logger'); const lint = require('../lint'); beforeEach(() => { diff --git a/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js b/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js index bdf6eb5a1..5246bd944 100644 --- a/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js +++ b/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js @@ -1,4 +1,4 @@ -jest.mock('../../logger'); +jest.mock('kyt-utils/logger'); const stylelintMock = { lint: jest.fn() @@ -11,7 +11,7 @@ jest.setMock('glob', { sync: jest.fn().mockReturnValueOnce(['filename']).mockReturnValueOnce([]), }); -jest.mock('../../../utils/paths'); +jest.mock('kyt-utils/paths'); jest.setMock('path', { join: jest.fn().mockReturnValue('filename2'), @@ -20,7 +20,7 @@ jest.setMock('path', { describe('lintStyle', () => { global.process.exit = jest.fn(); const lintStyle = require('../lintStyle'); - const logger = require('../../logger'); + const logger = require('kyt-utils/logger'); describe('when there is a user configuration', () => { it('lints with the found filename', () => { diff --git a/packages/kyt-core/cli/actions/__tests__/proto.test.js b/packages/kyt-core/cli/actions/__tests__/proto.test.js index 146c76c1c..759cb6f40 100644 --- a/packages/kyt-core/cli/actions/__tests__/proto.test.js +++ b/packages/kyt-core/cli/actions/__tests__/proto.test.js @@ -1,6 +1,6 @@ jest.mock('../../../utils/ifPortIsFreeDo'); -jest.mock('../../../utils/paths'); -jest.mock('../../logger'); +jest.mock('kyt-utils/paths'); +jest.mock('kyt-utils/logger'); jest.mock('shelljs'); const listen = jest.fn(); diff --git a/packages/kyt-core/cli/actions/__tests__/start.test.js b/packages/kyt-core/cli/actions/__tests__/start.test.js index 62f4a9660..29cff9b50 100644 --- a/packages/kyt-core/cli/actions/__tests__/start.test.js +++ b/packages/kyt-core/cli/actions/__tests__/start.test.js @@ -1,8 +1,8 @@ jest.mock('shelljs'); -jest.mock('../../logger'); +jest.mock('kyt-utils/logger'); const shell = require('shelljs'); -const logger = require('../../logger'); +const logger = require('kyt-utils/logger'); const start = require('../start'); describe('start', () => { diff --git a/packages/kyt-core/cli/actions/build.js b/packages/kyt-core/cli/actions/build.js index 82907e41a..3bca57a54 100644 --- a/packages/kyt-core/cli/actions/build.js +++ b/packages/kyt-core/cli/actions/build.js @@ -2,11 +2,11 @@ // Command to build production code const shell = require('shelljs'); -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); const printAssets = require('../../utils/printAssets'); const buildConfigs = require('../../utils/buildConfigs'); const webpackCompiler = require('../../utils/webpackCompiler'); -const { buildPath, publicBuildPath, publicSrcPath } = require('../../utils/paths')(); +const { buildPath, publicBuildPath, publicSrcPath } = require('kyt-utils/paths')(); module.exports = (config) => { logger.start('Starting production build...'); diff --git a/packages/kyt-core/cli/actions/dev.js b/packages/kyt-core/cli/actions/dev.js index f82b43b15..613c9b178 100644 --- a/packages/kyt-core/cli/actions/dev.js +++ b/packages/kyt-core/cli/actions/dev.js @@ -9,11 +9,11 @@ const devMiddleware = require('webpack-dev-middleware'); const hotMiddleware = require('webpack-hot-middleware'); const nodemon = require('nodemon'); const once = require('ramda').once; -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); const ifPortIsFreeDo = require('../../utils/ifPortIsFreeDo'); const buildConfigs = require('../../utils/buildConfigs'); const webpackCompiler = require('../../utils/webpackCompiler'); -const { buildPath, serverSrcPath } = require('../../utils/paths')(); +const { buildPath, serverSrcPath } = require('kyt-utils/paths')(); module.exports = (config, flags) => { logger.start('Starting development build...'); diff --git a/packages/kyt-core/cli/actions/lint.js b/packages/kyt-core/cli/actions/lint.js index bbd3c6fef..cad9f757a 100644 --- a/packages/kyt-core/cli/actions/lint.js +++ b/packages/kyt-core/cli/actions/lint.js @@ -3,9 +3,9 @@ const shell = require('shelljs'); const path = require('path'); -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); const glob = require('glob'); -const { userRootPath } = require('../../utils/paths')(); +const { userRootPath } = require('kyt-utils/paths')(); module.exports = (config, flags) => { const eslintrc = glob.sync(`${userRootPath}/.*eslintrc*`); diff --git a/packages/kyt-core/cli/actions/lintStyle.js b/packages/kyt-core/cli/actions/lintStyle.js index d6fc726fd..91e216532 100644 --- a/packages/kyt-core/cli/actions/lintStyle.js +++ b/packages/kyt-core/cli/actions/lintStyle.js @@ -1,9 +1,9 @@ const stylelint = require('stylelint'); -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); const glob = require('glob'); const path = require('path'); -const { userRootPath } = require('../../utils/paths')(); +const { userRootPath } = require('kyt-utils/paths')(); module.exports = () => { const handleError = (error) => { diff --git a/packages/kyt-core/cli/actions/proto.js b/packages/kyt-core/cli/actions/proto.js index eb7c87e4a..00a5b04bf 100644 --- a/packages/kyt-core/cli/actions/proto.js +++ b/packages/kyt-core/cli/actions/proto.js @@ -4,11 +4,11 @@ const webpack = require('webpack'); const merge = require('webpack-merge'); const WebpackDevServer = require('webpack-dev-server'); const shell = require('shelljs'); -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); const ifPortIsFreeDo = require('./../../utils/ifPortIsFreeDo'); const baseConfig = require('./../../config/webpack.base'); const protoConfig = require('./../../config/webpack.proto'); -const { userPrototypePath, publicSrcPath } = require('../../utils/paths')(); +const { userPrototypePath, publicSrcPath } = require('kyt-utils/paths')(); module.exports = (config) => { const prototypeURL = config.prototypeURL; diff --git a/packages/kyt-core/cli/actions/start.js b/packages/kyt-core/cli/actions/start.js index 30b762029..0feaff5d8 100644 --- a/packages/kyt-core/cli/actions/start.js +++ b/packages/kyt-core/cli/actions/start.js @@ -2,7 +2,7 @@ // Command to run production server const shell = require('shelljs'); -const logger = require('./../logger'); +const logger = require('kyt-utils/logger'); // we ignore the return value; it's just a convenience to // prevent the code from reaching a line later that would diff --git a/packages/kyt-core/cli/actions/test.js b/packages/kyt-core/cli/actions/test.js index f42a752aa..3c4cd2a62 100644 --- a/packages/kyt-core/cli/actions/test.js +++ b/packages/kyt-core/cli/actions/test.js @@ -5,7 +5,7 @@ const clone = require('ramda').clone; const jest = require('jest'); const shell = require('shelljs'); const jestConfigBuilder = require('../../config/jest'); -const { srcPath } = require('../../utils/paths')(); +const { srcPath } = require('kyt-utils/paths')(); const buildConfigs = require('../../utils/buildConfigs'); diff --git a/packages/kyt-core/cli/commands.js b/packages/kyt-core/cli/commands.js index dc3a9e960..c6ac8fa93 100755 --- a/packages/kyt-core/cli/commands.js +++ b/packages/kyt-core/cli/commands.js @@ -7,11 +7,10 @@ const testAction = require('./actions/test'); const buildAction = require('./actions/build'); const startAction = require('./actions/start'); const protoAction = require('./actions/proto'); -const setupAction = require('./actions/setup'); const lintStyleAction = require('./actions/lintStyle'); const kytConfigFn = require('./../utils/kytConfig'); -const logger = require('./logger'); -const { userPackageJSONPath } = require('../utils/paths')(); +const logger = require('kyt-utils/logger'); +const { userPackageJSONPath } = require('kyt-utils/paths')(); // Kill the process if the user did not run // the command from the root of their project. @@ -58,12 +57,6 @@ program .description('Starts the production build') .action(() => loadConfigAndDo(startAction)); -program - .command('setup') - .description('Generate a project from a github url to get started.') - .option('-r, --repository [address]', 'Github repository address') - .action(() => loadConfigAndDo(setupAction)); - program .command('test') .description('Run test files with Jest.') diff --git a/packages/kyt-core/config/webpack.base.js b/packages/kyt-core/config/webpack.base.js index 8b2397417..f82520802 100644 --- a/packages/kyt-core/config/webpack.base.js +++ b/packages/kyt-core/config/webpack.base.js @@ -7,7 +7,7 @@ const path = require('path'); const webpack = require('webpack'); const autoprefixer = require('autoprefixer'); const babel = require('./babel'); -const { buildPath, userNodeModulesPath } = require('../utils/paths')(); +const { buildPath, userNodeModulesPath } = require('kyt-utils/paths')(); module.exports = options => ({ node: { diff --git a/packages/kyt-core/config/webpack.dev.client.js b/packages/kyt-core/config/webpack.dev.client.js index b1260f6dd..94df6386a 100644 --- a/packages/kyt-core/config/webpack.dev.client.js +++ b/packages/kyt-core/config/webpack.dev.client.js @@ -4,7 +4,7 @@ const webpack = require('webpack'); const AssetsPlugin = require('assets-webpack-plugin'); const clone = require('ramda').clone; -const { clientSrcPath, buildPath, assetsBuildPath } = require('../utils/paths')(); +const { clientSrcPath, buildPath, assetsBuildPath } = require('kyt-utils/paths')(); const cssStyleLoaders = [ 'style', diff --git a/packages/kyt-core/config/webpack.dev.server.js b/packages/kyt-core/config/webpack.dev.server.js index 1e4066e59..0695127fe 100644 --- a/packages/kyt-core/config/webpack.dev.server.js +++ b/packages/kyt-core/config/webpack.dev.server.js @@ -4,7 +4,7 @@ const webpack = require('webpack'); const nodeExternals = require('webpack-node-externals'); const clone = require('ramda').clone; -const { serverSrcPath, serverBuildPath } = require('../utils/paths')(); +const { serverSrcPath, serverBuildPath } = require('kyt-utils/paths')(); const cssStyleLoaders = [ { diff --git a/packages/kyt-core/config/webpack.prod.client.js b/packages/kyt-core/config/webpack.prod.client.js index e9b59b4e1..04b4448a3 100644 --- a/packages/kyt-core/config/webpack.prod.client.js +++ b/packages/kyt-core/config/webpack.prod.client.js @@ -4,7 +4,7 @@ const webpack = require('webpack'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const AssetsPlugin = require('assets-webpack-plugin'); -const { clientSrcPath, assetsBuildPath, buildPath } = require('../utils/paths')(); +const { clientSrcPath, assetsBuildPath, buildPath } = require('kyt-utils/paths')(); const cssLoader = 'css?modules&sourceMap&localIdentName=[name]-[local]--[hash:base64:5]!postcss'; diff --git a/packages/kyt-core/config/webpack.prod.server.js b/packages/kyt-core/config/webpack.prod.server.js index 452427e32..38234233e 100644 --- a/packages/kyt-core/config/webpack.prod.server.js +++ b/packages/kyt-core/config/webpack.prod.server.js @@ -3,7 +3,7 @@ const nodeExternals = require('webpack-node-externals'); const clone = require('ramda').clone; -const { serverSrcPath, serverBuildPath } = require('../utils/paths')(); +const { serverSrcPath, serverBuildPath } = require('kyt-utils/paths')(); const cssStyleLoaders = [ { diff --git a/packages/kyt-core/config/webpack.proto.js b/packages/kyt-core/config/webpack.proto.js index 6155b39d5..e46a80a1f 100644 --- a/packages/kyt-core/config/webpack.proto.js +++ b/packages/kyt-core/config/webpack.proto.js @@ -4,7 +4,7 @@ const path = require('path'); const webpack = require('webpack'); const clone = require('ramda').clone; -const { userPrototypePath, prototypeBuildPath, srcPath } = require('../utils/paths')(); +const { userPrototypePath, prototypeBuildPath, srcPath } = require('kyt-utils/paths')(); const cssStyleLoaders = [ 'style', diff --git a/packages/kyt-core/package.json b/packages/kyt-core/package.json index c78d0a9e3..802dd93d2 100644 --- a/packages/kyt-core/package.json +++ b/packages/kyt-core/package.json @@ -58,6 +58,7 @@ "install": "0.8.1", "jest": "16.0.1", "json-loader": "0.5.4", + "kyt-utils": "file:../kyt-utils", "node-sass": "3.10.1", "nodemon": "1.10.2", "postcss-loader": "1.0.0", diff --git a/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js b/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js index 4399d20e7..b309fb167 100644 --- a/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js +++ b/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js @@ -1,6 +1,6 @@ describe('ifPortIsFreeDo', () => { - jest.mock('../../cli/logger'); + jest.mock('kyt-utils/logger'); const processExitMock = jest.fn(); global.process.exit = processExitMock; @@ -23,7 +23,7 @@ describe('ifPortIsFreeDo', () => { it('should log and exit process when port is not free', () => { const mockCallback = jest.fn(); jest.setMock('detect-port', (port, cb) => cb(null, port + 1)); - const logger = require('../../cli/logger'); + const logger = require('kyt-utils/logger'); const ipifd = require('../ifPortIsFreeDo'); ipifd(1, mockCallback); diff --git a/packages/kyt-core/utils/__tests__/kytConfig.test.js b/packages/kyt-core/utils/__tests__/kytConfig.test.js index e9da562cc..b292f347e 100644 --- a/packages/kyt-core/utils/__tests__/kytConfig.test.js +++ b/packages/kyt-core/utils/__tests__/kytConfig.test.js @@ -5,13 +5,13 @@ jest.setMock('path', { jest.setMock('shelljs', { test: () => true, }); -jest.mock('../../cli/logger'); +jest.mock('kyt-utils/logger'); describe('kytConfig', () => { let logger; beforeEach(() => { jest.resetModules(); - logger = require('../../cli/logger'); + logger = require('kyt-utils/logger'); }); it('logs error loading invalid kyt.config.js', () => { diff --git a/packages/kyt-core/utils/__tests__/printAssets.test.js b/packages/kyt-core/utils/__tests__/printAssets.test.js index ef45aeff3..e75dacc21 100644 --- a/packages/kyt-core/utils/__tests__/printAssets.test.js +++ b/packages/kyt-core/utils/__tests__/printAssets.test.js @@ -29,10 +29,10 @@ const gzSize = { jest.setMock('fs', fs); jest.setMock('gzip-size', gzSize); -jest.mock('../../cli/logger'); +jest.mock('kyt-utils/logger'); describe('printAssets', () => { - const logger = require('../../cli/logger'); + const logger = require('kyt-utils/logger'); require('../printAssets')({ toJson: () => ({ assets }), }, { output: { path: '' } }); diff --git a/packages/kyt-core/utils/__tests__/webpackCompiler.test.js b/packages/kyt-core/utils/__tests__/webpackCompiler.test.js index d078cc731..910971932 100644 --- a/packages/kyt-core/utils/__tests__/webpackCompiler.test.js +++ b/packages/kyt-core/utils/__tests__/webpackCompiler.test.js @@ -5,10 +5,10 @@ const webpackMock = jest.fn((obj) => { }); jest.setMock('webpack', webpackMock); const cb = jest.fn(); -jest.mock('../../cli/logger'); +jest.mock('kyt-utils/logger'); describe('webpackCompiler', () => { - const logger = require('../../cli/logger'); + const logger = require('kyt-utils/logger'); const webpackCompiler = require('../webpackCompiler'); beforeEach(() => { diff --git a/packages/kyt-core/utils/buildConfigs.js b/packages/kyt-core/utils/buildConfigs.js index 475d20e4c..697deda40 100644 --- a/packages/kyt-core/utils/buildConfigs.js +++ b/packages/kyt-core/utils/buildConfigs.js @@ -3,7 +3,7 @@ // For use by the client and server compilers. const merge = require('webpack-merge'); -const logger = require('../cli/logger'); +const logger = require('kyt-utils/logger'); const clone = require('ramda').clone; // base configs const baseConfig = require('../config/webpack.base'); diff --git a/packages/kyt-core/utils/ifPortIsFreeDo.js b/packages/kyt-core/utils/ifPortIsFreeDo.js index 4611de69e..db3c51cb7 100644 --- a/packages/kyt-core/utils/ifPortIsFreeDo.js +++ b/packages/kyt-core/utils/ifPortIsFreeDo.js @@ -1,6 +1,6 @@ const detect = require('detect-port'); -const logger = require('../cli/logger'); +const logger = require('kyt-utils/logger'); // Determines whethere the given port is in use const ifPortIsFreeDo = (port, callback) => { diff --git a/packages/kyt-core/utils/kytConfig.js b/packages/kyt-core/utils/kytConfig.js index 1305e6101..4876bff84 100644 --- a/packages/kyt-core/utils/kytConfig.js +++ b/packages/kyt-core/utils/kytConfig.js @@ -4,8 +4,8 @@ const path = require('path'); const shell = require('shelljs'); const mergeAll = require('ramda').mergeAll; -const logger = require('../cli/logger'); -const { userRootPath, userKytConfigPath } = require('./paths')(); +const logger = require('kyt-utils/logger'); +const { userRootPath, userKytConfigPath } = require('kyt-utils/paths')(); const url = require('url'); module.exports = (optionalConfig) => { diff --git a/packages/kyt-core/utils/printAssets.js b/packages/kyt-core/utils/printAssets.js index 91a869cf3..e74acc10e 100644 --- a/packages/kyt-core/utils/printAssets.js +++ b/packages/kyt-core/utils/printAssets.js @@ -5,7 +5,7 @@ const path = require('path'); const filesize = require('filesize'); const gzipSize = require('gzip-size'); const stripAnsi = require('strip-ansi'); -const logger = require('../cli/logger'); +const logger = require('kyt-utils/logger'); module.exports = (stats, clientConfig) => { const assetPath = clientConfig.output.path; diff --git a/packages/kyt-core/utils/webpackCompiler.js b/packages/kyt-core/utils/webpackCompiler.js index 5c347a96d..9b10e827c 100644 --- a/packages/kyt-core/utils/webpackCompiler.js +++ b/packages/kyt-core/utils/webpackCompiler.js @@ -1,5 +1,5 @@ const webpack = require('webpack'); -const logger = require('../cli/logger'); +const logger = require('kyt-utils/logger'); module.exports = (webpackConfig, cb) => { let webpackCompiler; diff --git a/packages/kyt-core/utils/__mocks__/paths.js b/packages/kyt-utils/__mocks__/paths.js similarity index 100% rename from packages/kyt-core/utils/__mocks__/paths.js rename to packages/kyt-utils/__mocks__/paths.js diff --git a/packages/kyt-core/cli/__tests__/logger.test.js b/packages/kyt-utils/__tests__/logger.test.js similarity index 100% rename from packages/kyt-core/cli/__tests__/logger.test.js rename to packages/kyt-utils/__tests__/logger.test.js diff --git a/packages/kyt-core/utils/__tests__/paths.test.js b/packages/kyt-utils/__tests__/paths.test.js similarity index 100% rename from packages/kyt-core/utils/__tests__/paths.test.js rename to packages/kyt-utils/__tests__/paths.test.js diff --git a/packages/kyt-core/cli/logger.js b/packages/kyt-utils/logger.js similarity index 100% rename from packages/kyt-core/cli/logger.js rename to packages/kyt-utils/logger.js diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json new file mode 100644 index 000000000..8184d17a9 --- /dev/null +++ b/packages/kyt-utils/package.json @@ -0,0 +1,11 @@ +{ + "name": "kyt-utils", + "version": "0.0.0", + "description": "", + "main": "logger.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "NYTimes", + "license": "Apache-2.0" +} diff --git a/packages/kyt-core/utils/paths.js b/packages/kyt-utils/paths.js similarity index 100% rename from packages/kyt-core/utils/paths.js rename to packages/kyt-utils/paths.js From 18343c2e5f42c5afcb4bca23800a7b85e72026f7 Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 30 Oct 2016 13:28:27 -0400 Subject: [PATCH 03/31] set up linting and testing, check versions of packages in setup --- packages/kyt-cli/.eslintrc.json | 5 +++ packages/kyt-cli/cli/actions/setup.js | 44 ++++++++++++++++++++++++--- packages/kyt-cli/package.json | 12 +++++++- packages/kyt-core/package.json | 1 - 4 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 packages/kyt-cli/.eslintrc.json diff --git a/packages/kyt-cli/.eslintrc.json b/packages/kyt-cli/.eslintrc.json new file mode 100644 index 000000000..b3ac55f66 --- /dev/null +++ b/packages/kyt-cli/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "../kyt-core/config/.eslintrc.base.json" + ] +} diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 4eeafba6e..da8021afe 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -17,9 +17,9 @@ const { } = require('kyt-utils/paths')(); // eslint-disable-line import/newline-after-import // eslint-disable-next-line import/no-dynamic-require const kytPkg = require(path.join(__dirname, '../../package.json')); +const cliPkgJson = require('../../package.json'); module.exports = (flags, args) => { - console.log('WERE HERE', process.cwd()); const date = Date.now(); const tmpDir = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape const repoURL = args.repository || 'https://github.com/NYTimes/kyt-starter-universal.git'; @@ -61,6 +61,15 @@ module.exports = (flags, args) => { packageJson.dependencies || {}, tempPackageJSON.dependencies ); + + // Add kyt to list of dependencies if its not there + if (!packageJson.dependencies.kyt) { + const output = shell.exec('npm info kyt version'); + const kytVersion = output.stdout.trim(); + packageJson.dependencies.kyt = 'file:../kyt/packages/kyt-core' + // = kytVersion; + } + logger.task('Added new dependencies to package.json'); return packageJson; }; @@ -167,7 +176,7 @@ module.exports = (flags, args) => { // Copy our user eslintrc into the user's root. const esLintPath = path.join(__dirname, '../../config/user/.eslintrc.base.json'); - console.log(esLintPath); + if (shell.cp(esLintPath, linkedPath).code === 0) { logger.task(`Created ${eslintFileName} file`); } else { @@ -386,7 +395,7 @@ module.exports = (flags, args) => { type: 'confirm', name: 'setupStarter', message: 'Would you like to setup with the default starter-kyt?', - default: false, + default: true, }, ]; inquire.prompt(question).then((answer) => { @@ -399,9 +408,34 @@ module.exports = (flags, args) => { } }; + const checkCliVersionPrompt = () => { + const currentVersion = cliPkgJson.version; + const output = shell.exec('npm info kyt-cli version'); + // If kyt-cli is up to date, proceed + // TODO: remove code check after cli is published + if (output.code !== 0 || !semver.lt(currentVersion, output.stdout.trim())) { + setupPrompt(); + } else { + const question = [ + { + type: 'confirm', + name: 'cliVersion', + message: 'There is a newer version of kyt-cli available. \n We recommend you upgrade before you continue. \n Would you like to proceed anyway?', + default: false, + }, + ]; + inquire.prompt(question).then((answer) => { + if (answer.cliVersion) { + setupPrompt(); + } else { + process.exit(); + } + }); + } + }; + try { - console.log('sucessfully in the function'); - setupPrompt(); + checkCliVersionPrompt(); } catch (err) { bailProcess(err); } diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index 35e053a3c..cc62feb68 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -7,9 +7,19 @@ "kyt-cli": "index.js" }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "jest --testPathPattern /__tests__/", + "lint": "eslint ." }, "license": "Apache-2.0", + "devDependencies": { + "eslint": "3.6.1", + "eslint-config-airbnb": "12.0.0", + "eslint-plugin-import": "2.0.0", + "eslint-plugin-json": "1.2.0", + "eslint-plugin-jsx-a11y": "2.2.2", + "eslint-plugin-react": "6.3.0", + "jest": "^16.0.2" + }, "dependencies": { "commander": "^2.9.0", "inquirer": "^1.2.2", diff --git a/packages/kyt-core/package.json b/packages/kyt-core/package.json index 802dd93d2..76549940f 100644 --- a/packages/kyt-core/package.json +++ b/packages/kyt-core/package.json @@ -68,7 +68,6 @@ "sass-loader": "4.0.2", "semver": "5.3.0", "shelljs": "0.7.4", - "simple-git": "1.52.0", "strip-ansi": "3.0.1", "style-loader": "0.13.1", "stylelint": "7.3.1", From a08f76e12d94245a8cdf225116844cd6f74fc531 Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 30 Oct 2016 16:30:13 -0400 Subject: [PATCH 04/31] tests and e2e tests can now be run from root, eslint not working --- .eslintrc.json | 32 +++++++++++++++++ packages/kyt-cli/.gitignore => .gitignore | 0 .travis.yml | 4 +++ .../e2e_tests => e2e_tests}/jest.config.json | 0 .../kyt-core/e2e_tests => e2e_tests}/pkg.json | 3 +- .../e2e_tests => e2e_tests}/tests/cli.test.js | 4 +-- .../kyt-core => e2e_tests}/utils/psKill.js | 0 package.json | 35 +++++++++++++++++++ packages/kyt-cli/package.json | 14 ++++---- packages/kyt-core/.gitignore | 35 ------------------- packages/kyt-core/.travis.yml | 4 --- 11 files changed, 82 insertions(+), 49 deletions(-) create mode 100644 .eslintrc.json rename packages/kyt-cli/.gitignore => .gitignore (100%) create mode 100644 .travis.yml rename {packages/kyt-core/e2e_tests => e2e_tests}/jest.config.json (100%) rename {packages/kyt-core/e2e_tests => e2e_tests}/pkg.json (56%) rename {packages/kyt-core/e2e_tests => e2e_tests}/tests/cli.test.js (97%) rename {packages/kyt-core => e2e_tests}/utils/psKill.js (100%) create mode 100644 package.json delete mode 100644 packages/kyt-core/.gitignore delete mode 100644 packages/kyt-core/.travis.yml diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 000000000..58bc536d5 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,32 @@ +{ + "extends": [ + "airbnb" + ], + + "env": { + "jest": true, + "browser": true + }, + + "plugins": [ + "json" + ], + + "rules": { + "no-lonely-if": 2, + "no-nested-ternary": 2, + "max-nested-callbacks": [2, { "max": 5 }], + "constructor-super": 2, + "no-this-before-super": 2, + "prefer-spread": 2, + "prefer-reflect": 2, + "no-warning-comments": [1, { "terms": ["todo", "fixme"], "location": "start" }], + "import/extensions": [1, { "js": "never" }], + "import/no-extraneous-dependencies": [0], + "no-param-reassign": 0 + }, + + "ignore": [ + "coverage" + ] +} diff --git a/packages/kyt-cli/.gitignore b/.gitignore similarity index 100% rename from packages/kyt-cli/.gitignore rename to .gitignore diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..06c3a82d7 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 6.0 +script: npm test && npm run e2e diff --git a/packages/kyt-core/e2e_tests/jest.config.json b/e2e_tests/jest.config.json similarity index 100% rename from packages/kyt-core/e2e_tests/jest.config.json rename to e2e_tests/jest.config.json diff --git a/packages/kyt-core/e2e_tests/pkg.json b/e2e_tests/pkg.json similarity index 56% rename from packages/kyt-core/e2e_tests/pkg.json rename to e2e_tests/pkg.json index 5e2245f4d..ed5c71d9d 100644 --- a/packages/kyt-core/e2e_tests/pkg.json +++ b/e2e_tests/pkg.json @@ -2,7 +2,8 @@ "name": "kyt-test", "version": "1.0.0", "dependencies": { - "kyt": "file:../." + "kyt": "file:../packages/kyt-core", + "kyt-cli": "file:../packages/kyt-cli" }, "author": "", "license": "ISC" diff --git a/packages/kyt-core/e2e_tests/tests/cli.test.js b/e2e_tests/tests/cli.test.js similarity index 97% rename from packages/kyt-core/e2e_tests/tests/cli.test.js rename to e2e_tests/tests/cli.test.js index 6fb042eb1..f46460ffe 100644 --- a/packages/kyt-core/e2e_tests/tests/cli.test.js +++ b/e2e_tests/tests/cli.test.js @@ -1,6 +1,6 @@ const path = require('path'); const shell = require('shelljs'); -const kill = require('../../utils/psKill'); +const kill = require('../utils/psKill'); const pkgJsonPath = path.join(__dirname, './../pkg.json'); @@ -22,7 +22,7 @@ describe('KYT CLI', () => { }); it('sets up a starter-kyt', () => { const setupURL = 'https://github.com/NYTimes/kyt-starter-test.git'; - const output = shell.exec(`node_modules/.bin/kyt setup -r ${setupURL}`); + const output = shell.exec(`node_modules/.bin/kyt-cli setup -r ${setupURL}`); expect(output.code).toBe(0); const setupArr = output.stdout.split('\n'); expect(setupArr.includes('🔥 Setting up starter-kyt')).toBe(true); diff --git a/packages/kyt-core/utils/psKill.js b/e2e_tests/utils/psKill.js similarity index 100% rename from packages/kyt-core/utils/psKill.js rename to e2e_tests/utils/psKill.js diff --git a/package.json b/package.json new file mode 100644 index 000000000..b1d47abb3 --- /dev/null +++ b/package.json @@ -0,0 +1,35 @@ +{ + "private": true, + "version": "0.0.0", + "description": "

", + "main": "index.js", + "directories": { + "doc": "docs" + }, + "scripts": { + "test": "jest --testPathPattern /__tests__/", + "e2e": "jest --config ./e2e_tests/jest.config.json --verbose --no-cache", + "lint": "eslint ." + }, + "repository": { + "type": "git", + "url": "git+https://github.com/NYTimes/kyt.git" + }, + "author": "", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/NYTimes/kyt/issues" + }, + "homepage": "https://github.com/NYTimes/kyt#readme", + "dependencies": { + "eslint": "3.6.1", + "eslint-config-airbnb": "12.0.0", + "eslint-plugin-import": "1.16.0", + "eslint-plugin-json": "1.2.0", + "eslint-plugin-jsx-a11y": "2.2.2", + "eslint-plugin-react": "6.3.0", + "jest": "16.0.2", + "ps-tree": "1.1.0", + "shelljs": "0.7.5" + } +} diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index cc62feb68..1a73a3ee1 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -18,15 +18,15 @@ "eslint-plugin-json": "1.2.0", "eslint-plugin-jsx-a11y": "2.2.2", "eslint-plugin-react": "6.3.0", - "jest": "^16.0.2" + "jest": "16.0.2" }, "dependencies": { - "commander": "^2.9.0", - "inquirer": "^1.2.2", + "commander": "2.9.0", + "inquirer": "1.2.2", "kyt-utils": "file:../kyt-utils", - "ramda": "^0.22.1", - "semver": "^5.3.0", - "shelljs": "^0.7.5", - "simple-git": "^1.59.0" + "ramda": "0.22.1", + "semver": "5.3.0", + "shelljs": "0.7.5", + "simple-git": "1.59.0" } } diff --git a/packages/kyt-core/.gitignore b/packages/kyt-core/.gitignore deleted file mode 100644 index bb2002aa8..000000000 --- a/packages/kyt-core/.gitignore +++ /dev/null @@ -1,35 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directory -node_modules - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history - -# OS-specific temporary files -Thumbs.db -.DS_Store -cli-test diff --git a/packages/kyt-core/.travis.yml b/packages/kyt-core/.travis.yml deleted file mode 100644 index 04793d98d..000000000 --- a/packages/kyt-core/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 6.0 -script: npm run lint && npm test && npm run e2e From d1cc392cfccf6337d40cf0e01fbfb270183944be Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 30 Oct 2016 16:47:23 -0400 Subject: [PATCH 05/31] moving node version check into a util --- .travis.yml | 2 +- packages/kyt-cli/index.js | 12 +----------- packages/kyt-core/cli/index.js | 12 +----------- packages/kyt-utils/checkNodeVersion.js | 10 ++++++++++ 4 files changed, 13 insertions(+), 23 deletions(-) create mode 100644 packages/kyt-utils/checkNodeVersion.js diff --git a/.travis.yml b/.travis.yml index 06c3a82d7..46e719874 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: node_js node_js: - 6.0 -script: npm test && npm run e2e +script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install && cd ../.. && npm test && npm run e2e diff --git a/packages/kyt-cli/index.js b/packages/kyt-cli/index.js index caf8bfdc7..e71b26aab 100755 --- a/packages/kyt-cli/index.js +++ b/packages/kyt-cli/index.js @@ -1,14 +1,4 @@ #!/usr/bin/env node -// This module has to be supported by old versions of node, so no ES6 -/* eslint-disable no-var, prefer-arrow-callback, prefer-template, no-console */ -var minNodeVersion = 6; - -// Make sure that the user has a compatible node version before loading the app. -if (Number(process.versions.node.split('.')[0]) < minNodeVersion) { - console.error('kyt requires Node v' + minNodeVersion + '+'); - console.info('Need to run multiple versions of node? Check out nvm'); - process.exit(1); -} - +require('kyt-utils/checkNodeVersion'); require('./cli/commands'); diff --git a/packages/kyt-core/cli/index.js b/packages/kyt-core/cli/index.js index be60667e0..b07275de1 100755 --- a/packages/kyt-core/cli/index.js +++ b/packages/kyt-core/cli/index.js @@ -1,14 +1,4 @@ #!/usr/bin/env node -// This module has to be supported by old versions of node, so no ES6 -/* eslint-disable no-var, prefer-arrow-callback, prefer-template, no-console */ -var minNodeVersion = 6; - -// Make sure that the user has a compatible node version before loading the app. -if (Number(process.versions.node.split('.')[0]) < minNodeVersion) { - console.error('kyt requires Node v' + minNodeVersion + '+'); - console.info('Need to run multiple versions of node? Check out nvm'); - process.exit(1); -} - +require('kyt-utils/checkNodeVersion'); require('./commands'); diff --git a/packages/kyt-utils/checkNodeVersion.js b/packages/kyt-utils/checkNodeVersion.js new file mode 100644 index 000000000..b35f1fcc7 --- /dev/null +++ b/packages/kyt-utils/checkNodeVersion.js @@ -0,0 +1,10 @@ +// This module has to be supported by old versions of node, so no ES6 +/* eslint-disable no-var, prefer-arrow-callback, prefer-template, no-console */ +var minNodeVersion = 6; + +// Make sure that the user has a compatible node version before loading the app. +if (Number(process.versions.node.split('.')[0]) < minNodeVersion) { + console.error('kyt requires Node v' + minNodeVersion + '+'); + console.info('Need to run multiple versions of node? Check out nvm'); + process.exit(1); +} From deb15ad9201661b7b196b161e1109cdc5fe07836 Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 30 Oct 2016 16:58:11 -0400 Subject: [PATCH 06/31] change dependency back to latest version from npm --- packages/kyt-cli/cli/actions/setup.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index da8021afe..a2158c5f3 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -66,8 +66,7 @@ module.exports = (flags, args) => { if (!packageJson.dependencies.kyt) { const output = shell.exec('npm info kyt version'); const kytVersion = output.stdout.trim(); - packageJson.dependencies.kyt = 'file:../kyt/packages/kyt-core' - // = kytVersion; + packageJson.dependencies.kyt = kytVersion; } logger.task('Added new dependencies to package.json'); From 63659965558900c9e87257b95bffd328a75b5dbf Mon Sep 17 00:00:00 2001 From: Price Date: Fri, 4 Nov 2016 19:52:57 -0400 Subject: [PATCH 07/31] Adding list selection of starter-kyts --- e2e_tests/tests/cli.test.js | 2 +- packages/kyt-cli/cli/actions/setup.js | 72 ++++++++++++++++++++------- 2 files changed, 54 insertions(+), 20 deletions(-) diff --git a/e2e_tests/tests/cli.test.js b/e2e_tests/tests/cli.test.js index f46460ffe..fd24a4814 100644 --- a/e2e_tests/tests/cli.test.js +++ b/e2e_tests/tests/cli.test.js @@ -25,7 +25,7 @@ describe('KYT CLI', () => { const output = shell.exec(`node_modules/.bin/kyt-cli setup -r ${setupURL}`); expect(output.code).toBe(0); const setupArr = output.stdout.split('\n'); - expect(setupArr.includes('🔥 Setting up starter-kyt')).toBe(true); + expect(setupArr.includes('🔥 Setting up the specified starter-kyt')).toBe(true); expect(setupArr.includes('👍 Added kyt scripts into your package.json scripts')).toBe(true); expect(setupArr.includes('👍 Added new dependencies to package.json')).toBe(true); expect(setupArr.includes('👍 Installed new modules')).toBe(true); diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index a2158c5f3..bcb7b03b1 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -16,13 +16,12 @@ const { userPackageJSONPath, } = require('kyt-utils/paths')(); // eslint-disable-line import/newline-after-import // eslint-disable-next-line import/no-dynamic-require -const kytPkg = require(path.join(__dirname, '../../package.json')); const cliPkgJson = require('../../package.json'); module.exports = (flags, args) => { const date = Date.now(); const tmpDir = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape - const repoURL = args.repository || 'https://github.com/NYTimes/kyt-starter-universal.git'; + let repoURL = args.repository || 'https://github.com/NYTimes/kyt-starter-universal.git'; const removeTmpDir = () => shell.rm('-rf', tmpDir); let tempPackageJSON; let oldPackageJSON; @@ -38,12 +37,18 @@ module.exports = (flags, args) => { // Compare the Starter-kyt's package.json kyt.version // configuration to make sure kyt is an expected version. - const checkStarterKytVersion = () => { + const checkStarterKytVersion = (userPackageJSON) => { const kytStarterVersion = (tempPackageJSON.kyt && tempPackageJSON.kyt.version) || null; if (kytStarterVersion) { - if (!semver.satisfies(kytPkg.version, kytStarterVersion)) { - // eslint-disable-next-line max-len - logger.warn(`${tempPackageJSON.name} requires kyt version ${kytStarterVersion} but kyt ${kytPkg.version} is installed.`); + // Look everywhere for kyt + const kytVersion = + (userPackageJSON.devDependencies && userPackageJSON.devDependencies.kyt) + || (userPackageJSON.dependencies && userPackageJSON.dependencies.kyt); + if (semver.valid(kytVersion)) { + if (!semver.satisfies(kytVersion, kytStarterVersion)) { + // eslint-disable-next-line max-len + logger.warn(`${tempPackageJSON.name} requires kyt version ${kytStarterVersion} but kyt ${kytVersion} is installed.`); + } } } }; @@ -62,11 +67,13 @@ module.exports = (flags, args) => { tempPackageJSON.dependencies ); - // Add kyt to list of dependencies if its not there - if (!packageJson.dependencies.kyt) { + // Add kyt to list of dev dependencies if its not there + // eslint-disable-next-line max-len + if (!packageJson.dependencies.kyt && !(packageJson.devDependencies && packageJson.devDependencies.kyt)) { const output = shell.exec('npm info kyt version'); const kytVersion = output.stdout.trim(); - packageJson.dependencies.kyt = kytVersion; + packageJson.devDependencies = packageJson.devDependencies || {}; + packageJson.devDependencies.kyt = kytVersion; } logger.task('Added new dependencies to package.json'); @@ -141,6 +148,7 @@ module.exports = (flags, args) => { // Add dependencies from starter-kyts if (!defaultMode) { userPackageJSON = updatePackageJSONDependencies(userPackageJSON); + checkStarterKytVersion(userPackageJSON); } // Add scripts userPackageJSON = addPackageJsonScripts(userPackageJSON); @@ -317,8 +325,9 @@ module.exports = (flags, args) => { }; // setup flow for starter-kyts - const starterKytSetup = () => { - logger.start('Setting up starter-kyt'); + const starterKytSetup = (starterName) => { + starterName = starterName || 'specified'; + logger.start(`Setting up the ${starterName} starter-kyt`); const afterClone = (error) => { if (error) { logger.error('There was a problem cloning the repository'); @@ -327,7 +336,6 @@ module.exports = (flags, args) => { } // eslint-disable-next-line global-require,import/no-dynamic-require tempPackageJSON = require(`${tmpDir}/package.json`); - checkStarterKytVersion(); updateUserPackageJSON(false); installUserDependencies(); createESLintFile(); @@ -359,8 +367,34 @@ module.exports = (flags, args) => { logger.end('Done setting up kyt'); }; + const starterKytPrompt = () => { + const question = [ + { + type: 'list', + name: 'starterChoice', + message: 'Which starter-kyt would you like to install?', // eslint-disable-line + choices: ['Universal', 'Static'], + default: 0, + }, + ]; + inquire.prompt(question).then((answer) => { + if (answer.starterChoice === 'Static') { + repoURL = 'https://github.com/NYTimes/kyt-starter-static.git'; + } + starterKytSetup(answer.starterChoice); + }); + }; + + const callStarterSetup = () => { + if (args.repository) { + starterKytSetup(); + } else { + starterKytPrompt(); + } + }; + // Checks to see if user would like src backed up before continuing - const srcPrompt = (startSetup) => { + const srcPrompt = () => { // Check if src already exists if (shell.test('-d', srcPath)) { const question = [ @@ -373,33 +407,33 @@ module.exports = (flags, args) => { ]; inquire.prompt(question).then((answer) => { if (answer.srcBackup) { - startSetup(); + callStarterSetup(); } else { process.exit(); } }); } else { - startSetup(); + callStarterSetup(); } }; // Selects type of setup const setupPrompt = () => { - // Skip starter-kyt question if they've already supplied a repo name + // Skip starter-kyt questions if they've already supplied a repo name if (args.repository) { - srcPrompt(starterKytSetup); + srcPrompt(); } else { const question = [ { type: 'confirm', name: 'setupStarter', - message: 'Would you like to setup with the default starter-kyt?', + message: 'Would you like to setup with a starter-kyt?', default: true, }, ]; inquire.prompt(question).then((answer) => { if (answer.setupStarter) { - srcPrompt(starterKytSetup); + srcPrompt(); } else { defaultSetup(); } From cb68175faabbb431eaae407f94ffc3a3c23442a6 Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 6 Nov 2016 20:02:10 -0500 Subject: [PATCH 08/31] updating start command --- e2e_tests/tests/cli.test.js | 3 +- packages/kyt-cli/cli/actions/setup.js | 7 +-- .../cli/actions/__tests__/start.test.js | 47 ------------------- packages/kyt-core/cli/actions/start.js | 22 --------- packages/kyt-core/cli/commands.js | 6 --- 5 files changed, 6 insertions(+), 79 deletions(-) delete mode 100644 packages/kyt-core/cli/actions/__tests__/start.test.js delete mode 100644 packages/kyt-core/cli/actions/start.js diff --git a/e2e_tests/tests/cli.test.js b/e2e_tests/tests/cli.test.js index fd24a4814..9d76b4a70 100644 --- a/e2e_tests/tests/cli.test.js +++ b/e2e_tests/tests/cli.test.js @@ -49,6 +49,7 @@ describe('KYT CLI', () => { const userPackageJSON = require.requireActual('../../cli-test/package.json'); const scripts = userPackageJSON.scripts; expect(scripts.dev).toBe('kyt dev'); + expect(scripts.start).toBe('node build/server/main.js'); expect(scripts.build).toBe('kyt build'); expect(scripts.test).toBe('kyt test'); expect(scripts.lint).toBe('kyt lint'); @@ -95,7 +96,7 @@ describe('KYT CLI', () => { done(); }); child.stdout.on('data', (data) => { - if (data.includes('Server running')) { + if (data.includes('node build/server/main.js')) { shell.exec('sleep 3'); const output = shell.exec('curl -I localhost:3100'); expect(output.includes('200')); diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index bcb7b03b1..0ee98761d 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -91,8 +91,9 @@ module.exports = (flags, args) => { // for commands that aren't 1:1 name:script const commandMap = { - 'test-watch': 'test -- --watch', - 'test-coverage': 'test -- --coverage', + 'start': 'node build/server/main.js', + 'test-watch': 'kyt test -- --watch', + 'test-coverage': 'kyt test -- --coverage', }; // Merge the Starter-kyt script names into the list of commands. @@ -120,7 +121,7 @@ module.exports = (flags, args) => { if (tempScripts.indexOf(command) > -1) { packageJson.scripts[commandName] = tempPackageJSON.scripts[command]; } else { - packageJson.scripts[commandName] = `kyt ${commandMap[command] || command}`; + packageJson.scripts[commandName] = commandMap[command] || `kyt ${command}`; } }); packageJson.scripts['kyt:help'] = 'kyt --help'; diff --git a/packages/kyt-core/cli/actions/__tests__/start.test.js b/packages/kyt-core/cli/actions/__tests__/start.test.js deleted file mode 100644 index 29cff9b50..000000000 --- a/packages/kyt-core/cli/actions/__tests__/start.test.js +++ /dev/null @@ -1,47 +0,0 @@ -jest.mock('shelljs'); -jest.mock('kyt-utils/logger'); - -const shell = require('shelljs'); -const logger = require('kyt-utils/logger'); -const start = require('../start'); - -describe('start', () => { - const serverURL = { href: 'href' }; - - beforeEach(() => { - global.process.exit = jest.fn(); - Object.keys(logger).forEach((key) => { logger[key].mockClear(); }); - }); - - describe('default case', () => { - beforeEach(() => { - start({ serverURL, hasServer: true }, []); - }); - - it('does not call process.exit or logger.error', () => { - expect(logger.error.mock.calls.length).toBe(0); - expect(global.process.exit.mock.calls.length).toBe(0); - }); - - it('logs start, task and end', () => { - expect(logger.start).toBeCalledWith('Starting production server...'); - expect(logger.task).toBeCalledWith(`Server running on ${serverURL.href}`); - expect(logger.end).toBeCalledWith('Production started'); - }); - - it('executes the node process asynchronously', () => { - expect(shell.exec).toBeCalledWith('node build/server/main.js ', { async: true }); - }); - }); - - describe('hasServer set to false', () => { - beforeEach(() => { - start({ hasServer: false }, []); - }); - - it('logs an error and exits', () => { - expect(logger.error).toBeCalledWith('You have hasServer set to false, bailing'); - expect(global.process.exit.mock.calls).toEqual([[1]]); - }); - }); -}); diff --git a/packages/kyt-core/cli/actions/start.js b/packages/kyt-core/cli/actions/start.js deleted file mode 100644 index 0feaff5d8..000000000 --- a/packages/kyt-core/cli/actions/start.js +++ /dev/null @@ -1,22 +0,0 @@ - -// Command to run production server - -const shell = require('shelljs'); -const logger = require('kyt-utils/logger'); - -// we ignore the return value; it's just a convenience to -// prevent the code from reaching a line later that would -// cause a ReferenceError -// eslint-disable-next-line consistent-return -module.exports = (config, flags) => { - if (!config.hasServer) { - logger.error('You have hasServer set to false, bailing'); - return process.exit(1); - } - - logger.start('Starting production server...'); - const cmd = `node build/server/main.js ${flags.join(' ')}`; - shell.exec(cmd, { async: true }); - logger.task(`Server running on ${config.serverURL.href}`); - logger.end('Production started'); -}; diff --git a/packages/kyt-core/cli/commands.js b/packages/kyt-core/cli/commands.js index c6ac8fa93..f361aae36 100755 --- a/packages/kyt-core/cli/commands.js +++ b/packages/kyt-core/cli/commands.js @@ -5,7 +5,6 @@ const devAction = require('./actions/dev'); const lintAction = require('./actions/lint'); const testAction = require('./actions/test'); const buildAction = require('./actions/build'); -const startAction = require('./actions/start'); const protoAction = require('./actions/proto'); const lintStyleAction = require('./actions/lintStyle'); const kytConfigFn = require('./../utils/kytConfig'); @@ -52,11 +51,6 @@ program loadConfigAndDo(buildAction, config); }); -program - .command('start') - .description('Starts the production build') - .action(() => loadConfigAndDo(startAction)); - program .command('test') .description('Run test files with Jest.') From 5a5b6f76146b257bc0d8767265e28a9bd07630cc Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 12 Nov 2016 18:40:09 -0500 Subject: [PATCH 09/31] moving kyt-starter-universal --- packages/kyt-core/cli/commands.js | 6 ++++++ packages/starter-kyts/kyt-starter-universal | 1 + 2 files changed, 7 insertions(+) create mode 160000 packages/starter-kyts/kyt-starter-universal diff --git a/packages/kyt-core/cli/commands.js b/packages/kyt-core/cli/commands.js index f361aae36..a4f0112c5 100755 --- a/packages/kyt-core/cli/commands.js +++ b/packages/kyt-core/cli/commands.js @@ -66,5 +66,11 @@ program .description('Start a prorotype dev server.') .action(() => loadConfigAndDo(protoAction)); +program + .command('setup') + .description('deprecated') + .action(() => { + logger.error('Setup is now part of kyt-cli. \n npm install -g kyt-cli'); + }); program.parse(process.argv); diff --git a/packages/starter-kyts/kyt-starter-universal b/packages/starter-kyts/kyt-starter-universal new file mode 160000 index 000000000..dbc3824c1 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal @@ -0,0 +1 @@ +Subproject commit dbc3824c101d6501872cbab44586f9641f96caba From 2c4f95fdb0b38b3e46ba66460ec8e4648f065926 Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 12 Nov 2016 18:51:15 -0500 Subject: [PATCH 10/31] copying starter-kyt --- packages/starter-kyts/kyt-starter-universal | 1 - .../kyt-starter-universall/LICENSE | 13 +++++ .../kyt-starter-universall/README.md | 29 +++++++++ .../kyt-starter-universall/kyt.config.js | 8 +++ .../kyt-starter-universall/package.json | 30 ++++++++++ .../kyt-starter-universall/prototype.js | 16 +++++ .../kyt-starter-universall/src/client/Root.js | 14 +++++ .../src/client/index.js | 26 +++++++++ .../src/components/App/index.js | 29 +++++++++ .../src/components/App/index.test.js | 10 ++++ .../src/components/App/styles.scss | 36 ++++++++++++ .../src/components/Home/index.js | 21 +++++++ .../src/components/Home/index.test.js | 10 ++++ .../src/components/Home/styles.scss | 6 ++ .../src/components/Tools/index.js | 27 +++++++++ .../src/components/Tools/index.test.js | 10 ++++ .../src/components/Tools/styles.scss | 6 ++ .../src/images/icon-kytLogo_large-252x252.svg | 55 ++++++++++++++++++ .../src/public/kyt-favicon.png | Bin 0 -> 1297 bytes .../src/routes/index.js | 40 +++++++++++++ .../src/server/index.js | 48 +++++++++++++++ .../src/server/template.js | 30 ++++++++++ .../src/shared-styles/variables.scss | 3 + 23 files changed, 467 insertions(+), 1 deletion(-) delete mode 160000 packages/starter-kyts/kyt-starter-universal create mode 100644 packages/starter-kyts/kyt-starter-universall/LICENSE create mode 100644 packages/starter-kyts/kyt-starter-universall/README.md create mode 100644 packages/starter-kyts/kyt-starter-universall/kyt.config.js create mode 100644 packages/starter-kyts/kyt-starter-universall/package.json create mode 100644 packages/starter-kyts/kyt-starter-universall/prototype.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/client/Root.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/client/index.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/App/index.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/App/index.test.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/App/styles.scss create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/Home/index.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/Home/index.test.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/Home/styles.scss create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.test.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/components/Tools/styles.scss create mode 100644 packages/starter-kyts/kyt-starter-universall/src/images/icon-kytLogo_large-252x252.svg create mode 100644 packages/starter-kyts/kyt-starter-universall/src/public/kyt-favicon.png create mode 100644 packages/starter-kyts/kyt-starter-universall/src/routes/index.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/server/index.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/server/template.js create mode 100644 packages/starter-kyts/kyt-starter-universall/src/shared-styles/variables.scss diff --git a/packages/starter-kyts/kyt-starter-universal b/packages/starter-kyts/kyt-starter-universal deleted file mode 160000 index dbc3824c1..000000000 --- a/packages/starter-kyts/kyt-starter-universal +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dbc3824c101d6501872cbab44586f9641f96caba diff --git a/packages/starter-kyts/kyt-starter-universall/LICENSE b/packages/starter-kyts/kyt-starter-universall/LICENSE new file mode 100644 index 000000000..e15a04d32 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2016 The New York Times Company + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this library except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/starter-kyts/kyt-starter-universall/README.md b/packages/starter-kyts/kyt-starter-universall/README.md new file mode 100644 index 000000000..8f9b1ce7a --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/README.md @@ -0,0 +1,29 @@ +# Universal React starter-kyt + +This starter-kyt should serve as the base for an advanced, server and client-rendered React app. + + +## Installation + +1. Create a new directory and install [kyt](https://github.com/NYTimes/kyt) +2. `node_modules/.bin/kyt setup -r git@github.com:NYTimes/kyt-starter-universal.git` + +## Tools + +The following are some of the tools included in this starter-kyt: + +- [Express](https://expressjs.com/) - Server-side rendering +- [React](https://facebook.github.io/react/) - Component library +- [React Router](https://github.com/reactjs/react-router) - Server and client routing +- [Sass Modules](https://github.com/css-modules/css-modules) - CSS Modules with a Sass pre-processor for styles +- [Enzyme](https://github.com/airbnb/enzyme) - React component testing + +## Notes on implementation + +- As a performance optimization, React Router routes are loaded dynamically and chunked separately using the ES2015 `System.import` directive. See more about [Webpack 2 support](https://gist.github.com/sokra/27b24881210b56bbaff7#code-splitting-with-es6) and [dynamic routing](https://github.com/reactjs/react-router/blob/master/docs/guides/DynamicRouting.md). + +## How To Contribute +Want to build your own starter-kyt? +See directions [here](https://github.com/NYTimes/kyt/blob/master/docs/Starterkyts.md). + +## Changelog diff --git a/packages/starter-kyts/kyt-starter-universall/kyt.config.js b/packages/starter-kyts/kyt-starter-universall/kyt.config.js new file mode 100644 index 000000000..11fa4b388 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/kyt.config.js @@ -0,0 +1,8 @@ + +// Base kyt config. +// Edit these properties to make changes. + +module.exports = { + reactHotLoader: true, + debug: false, +}; diff --git a/packages/starter-kyts/kyt-starter-universall/package.json b/packages/starter-kyts/kyt-starter-universall/package.json new file mode 100644 index 000000000..207296e93 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/package.json @@ -0,0 +1,30 @@ +{ + "name": "wf-kyt-starter-universal", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + }, + "repository": { + "type": "git", + "url": "git+https://github.com/nytm/wf-kyt-starter-universal.git" + }, + "author": "", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/nytm/wf-kyt-starter-universal/issues" + }, + "homepage": "https://github.com/nytm/wf-kyt-starter-universal#readme", + "kyt": { + "version": "^0.3.0" + }, + "dependencies": { + "compression": "^1.6.2", + "enzyme": "^2.4.1", + "express": "^4.14.0", + "react": "^15.3.0", + "react-addons-test-utils": "^15.3.0", + "react-dom": "^15.3.0", + "react-router": "^2.6.1" + } +} diff --git a/packages/starter-kyts/kyt-starter-universall/prototype.js b/packages/starter-kyts/kyt-starter-universall/prototype.js new file mode 100644 index 000000000..e843e9b52 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/prototype.js @@ -0,0 +1,16 @@ + +// This is your prototyping file. +// It is the entry for the webpack dev server +// when you run the kyt proto command. +import React from 'react'; +import ReactDom from 'react-dom'; + +// Import your component here for easy development +import Home from './src/components/Home'; + +// Attach the component to the root. +const rootEl = document.getElementById('root'); +ReactDom.render( + , + rootEl +); diff --git a/packages/starter-kyts/kyt-starter-universall/src/client/Root.js b/packages/starter-kyts/kyt-starter-universall/src/client/Root.js new file mode 100644 index 000000000..85f4735d3 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/client/Root.js @@ -0,0 +1,14 @@ + +import React from 'react'; +import Router from 'react-router/lib/Router'; +import browserHistory from 'react-router/lib/browserHistory'; +import routes from '../routes'; + +// We need a Root component for React Hot Loading. +function Root() { + return ( + + ); +} + +export default Root; diff --git a/packages/starter-kyts/kyt-starter-universall/src/client/index.js b/packages/starter-kyts/kyt-starter-universall/src/client/index.js new file mode 100644 index 000000000..cb7fbb862 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/client/index.js @@ -0,0 +1,26 @@ + +import React from 'react'; +import { render } from 'react-dom'; +import { AppContainer } from 'react-hot-loader'; +import Root from './Root'; + +const root = document.querySelector('#root'); + +const mount = (RootComponent) => { + render( + + + , + root + ); +}; + +if (module.hot) { + module.hot.accept('./Root', () => { + // eslint-disable-next-line global-require,import/newline-after-import + const RootComponent = require('./Root').default; + mount(RootComponent); + }); +} + +mount(Root); diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/App/index.js b/packages/starter-kyts/kyt-starter-universall/src/components/App/index.js new file mode 100644 index 000000000..5f8277e87 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/App/index.js @@ -0,0 +1,29 @@ + +import React, { PropTypes } from 'react'; +import Link from 'react-router/lib/Link'; +import styles from './styles.scss'; + +function App({ children }) { + return ( +
+ +
    +
  • + Home +
  • +
  • + Tools +
  • +
+
+ {children} +
+
+ ); +} + +App.propTypes = { + children: PropTypes.node, +}; + +export default App; diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/App/index.test.js b/packages/starter-kyts/kyt-starter-universall/src/components/App/index.test.js new file mode 100644 index 000000000..12bfab43f --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/App/index.test.js @@ -0,0 +1,10 @@ + + +import React from 'react'; +import { shallow } from 'enzyme'; +import App from './'; + +it('Test example', () => { + const wrapper = shallow(); + expect(wrapper.is('div')).toBeTruthy(); +}); diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/App/styles.scss b/packages/starter-kyts/kyt-starter-universall/src/components/App/styles.scss new file mode 100644 index 000000000..e73b4294d --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/App/styles.scss @@ -0,0 +1,36 @@ + +@import '../../shared-styles/variables'; + +.header { + text-align: center; +} + +.nav { + width: $content-width; + margin: 0 auto; + padding: $padding; + text-align: center; +} + +.content { + width: $content-width; + margin: $padding auto; +} + +.navItem { + display: inline-block; +} + +.link { + padding: $padding; + color: #00a68f; + font-size: 18px; +} + +.logo { + display: block; + width: 252px; + height: 252px; + margin: $padding auto; + background: url('../../images/icon-kytLogo_large-252x252.svg'); +} diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.js b/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.js new file mode 100644 index 000000000..4b4e39f1c --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.js @@ -0,0 +1,21 @@ + +import React from 'react'; +import styles from './styles.scss'; + +function Home() { + return ( +
+

+ Welcome to the Universal React Starter-kyt. + This starter kyt should serve as the base for an advanced, + server-rendered React app. +

+

+ Check out the Tools section for an outline of the libraries that + are used in this Starter-kyt. +

+
+ ); +} + +export default Home; diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.test.js b/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.test.js new file mode 100644 index 000000000..e74c32d05 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.test.js @@ -0,0 +1,10 @@ + + +import React from 'react'; +import { shallow } from 'enzyme'; +import Home from './'; + +it('Test example', () => { + const wrapper = shallow(); + expect(wrapper.is('section')).toBeTruthy(); +}); diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Home/styles.scss b/packages/starter-kyts/kyt-starter-universall/src/components/Home/styles.scss new file mode 100644 index 000000000..1674218f3 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/Home/styles.scss @@ -0,0 +1,6 @@ + +@import '../../shared-styles/variables'; + +.paragraph + .paragraph { + padding-top: $padding; +} diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.js b/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.js new file mode 100644 index 000000000..d93d9bc38 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.js @@ -0,0 +1,27 @@ + +import React from 'react'; +import styles from './styles.scss'; + +function Tools() { + return ( +
    +
  • + Express - server-side rendering +
  • +
  • + React - component library +
  • +
  • + React Router - server and browser routing +
  • +
  • + Sass Modules - CSS Modules with a Sass pre-processor for styles +
  • +
  • + Enzyme - React component testing +
  • +
+ ); +} + +export default Tools; diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.test.js b/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.test.js new file mode 100644 index 000000000..7e396e5e5 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.test.js @@ -0,0 +1,10 @@ + + +import React from 'react'; +import { shallow } from 'enzyme'; +import Tools from './'; + +it('Test example', () => { + const wrapper = shallow(); + expect(wrapper.is('ul')).toBeTruthy(); +}); diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Tools/styles.scss b/packages/starter-kyts/kyt-starter-universall/src/components/Tools/styles.scss new file mode 100644 index 000000000..660f1dd98 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/components/Tools/styles.scss @@ -0,0 +1,6 @@ + +@import '../../shared-styles/variables'; + +.tool + .tool { + padding-top: 5px; +} diff --git a/packages/starter-kyts/kyt-starter-universall/src/images/icon-kytLogo_large-252x252.svg b/packages/starter-kyts/kyt-starter-universall/src/images/icon-kytLogo_large-252x252.svg new file mode 100644 index 000000000..5e9a43a10 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/images/icon-kytLogo_large-252x252.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/starter-kyts/kyt-starter-universall/src/public/kyt-favicon.png b/packages/starter-kyts/kyt-starter-universall/src/public/kyt-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..4b418b24c1d7173392c8da1ba4755eacd18a06c3 GIT binary patch literal 1297 zcmV+s1@8KZP) zEnBl9F;;`!jXyO$=&Auptab@iBmu3jCMK;9Ccfw+4?bA*)ui=>pAyrBCW=bZB_@g~ z*hPM~ok?*A^^bla6lPG;ubxpTfb=R4=jWl&-3PVD`RbKb`o z1J0R-{ktcIk0oK1jaRa`>$N?-h9UY4!vO3_RFpwjLkm>0Sl5jRo?7B&%)p+kz}5Q( z08gGFr9uGMK=5g1EdVNV!FQ)ehtT9hrVC6#t9-Q<0BkiM?Ruqa1}%W@AXl&?5fR5U zkK*$Vlqh2yg{jEZf#b)H^j8hQOE2#xMH95Sq7VQs-9ccecjq)V=flU3uvG(irt|qY zoeY(Am?xCtC@daZ;prQrn%Ifqqv;isaK{s!DsC`>O5+r603?PapW8$ch0L>%Qj46< zm@yH-!O8(3xuV#`r5Yi8%Jgkv5G_prb+u4CHf}-@B;M#S0g?GFAhcg{#Q?5c9#1{? z_*0g0?kHJ2_$n;D-6iMB+-+EY<`+w;*PEtNH&>8*;05pgZ|>WlAW$eNzFf>(VdeQvUZ=5C}F*yU*`gc?9Q^u7cYn9D)ydxyY~W^t@R;W&}l)1x7$qC^eOtxUQMfQ!1W z1Bqc+{q;G3`2}aqogLfdN$20%EtOMKKR@cTibo=(oW??!wS-)}oC{L68EqHP*z1M@ z60)#Kg{7UHavnT)2?D=Od9$SFTj6=`jvWAvO%b)J`JuRL0o^0^hdRK8-(4#`9ELm+ z)5+^MZWSplkrV)m_fr%ryIV(Wq-OsPuFR#e(6{&_eAeDrYn;_`1E z)OS7xWnrmEIfW%OocZA!%~uVP2+?A5`$hN5>`lK$BxT^EFWmfCTLbeS94JFX5iKdl z_#$0KVH)3QrGRjw^H<#ypS=Kp!iT?i!}GZg$alx@#f5kY0KISvmFNS7g3k*5S}q$y z#4&FeI$=3E;XrO(Jj(ewKk?R+t@uYb{*blI*iLz!*B^C~_;Nu+|9QGfK&p zC6X0iN{OWY&4ddCd#`KU`-04GX-h7mp|Lm8=f{84Rt3PmfcO=90SPaV3{GQHe@tjq zxt8C(^LK_TO#~upoiJse4C^^w$ptDhFa)S_VsYUjbuD{IgK9Sf5h?esdDFJR(B|!; zrS%c9HT { + System.import('../components/Home') + .then(module => cb(null, module.default)) + .catch((e) => { throw e; }); +}; + +const importTools = (nextState, cb) => { + System.import('../components/Tools') + .then(module => cb(null, module.default)) + .catch((e) => { throw e; }); +}; + +// We use `getComponent` to dynamically load routes. +// https://github.com/reactjs/react-router/blob/master/docs/guides/DynamicRouting.md +const routes = ( + + + + +); + +// Unfortunately, HMR breaks when we dynamically resolve +// routes so we need to require them here as a workaround. +// https://github.com/gaearon/react-hot-loader/issues/288 +if (module.hot) { + require('../components/Home'); // eslint-disable-line global-require + require('../components/Tools'); // eslint-disable-line global-require +} + +export default routes; diff --git a/packages/starter-kyts/kyt-starter-universall/src/server/index.js b/packages/starter-kyts/kyt-starter-universall/src/server/index.js new file mode 100644 index 000000000..431df7633 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/server/index.js @@ -0,0 +1,48 @@ + +import express from 'express'; +import compression from 'compression'; +import path from 'path'; +import React from 'react'; +import { renderToString } from 'react-dom/server'; +import RouterContext from 'react-router/lib/RouterContext'; +import createMemoryHistory from 'react-router/lib/createMemoryHistory'; +import match from 'react-router/lib/match'; +import template from './template'; +import routes from '../routes'; + +const clientAssets = require(KYT.ASSETS_MANIFEST); // eslint-disable-line import/no-dynamic-require +const app = express(); + +// Remove annoying Express header addition. +app.disable('x-powered-by'); + +// Compress (gzip) assets in production. +app.use(compression()); + +// Setup the public directory so that we can server static assets. +app.use(express.static(path.join(process.cwd(), KYT.PUBLIC_DIR))); + +// Setup server side routing. +app.get('*', (request, response) => { + const history = createMemoryHistory(request.originalUrl); + + match({ routes, history }, (error, redirectLocation, renderProps) => { + if (error) { + response.status(500).send(error.message); + } else if (redirectLocation) { + response.redirect(302, `${redirectLocation.pathname}${redirectLocation.search}`); + } else if (renderProps) { + // When a React Router route is matched then we render + // the components and assets into the template. + response.status(200).send(template({ + root: renderToString(), + jsBundle: clientAssets.main.js, + cssBundle: clientAssets.main.css, + })); + } else { + response.status(404).send('Not found'); + } + }); +}); + +app.listen(parseInt(KYT.SERVER_PORT, 10)); diff --git a/packages/starter-kyts/kyt-starter-universall/src/server/template.js b/packages/starter-kyts/kyt-starter-universall/src/server/template.js new file mode 100644 index 000000000..6c20cc847 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/server/template.js @@ -0,0 +1,30 @@ + +/* eslint-disable prefer-template, max-len */ + +export default vo => ` + + + + + + + + + + + + + + ${vo.cssBundle ? '' : ''} + + Universal React Starter Kyt + + + +
${vo.root}
+ + + + + +`; diff --git a/packages/starter-kyts/kyt-starter-universall/src/shared-styles/variables.scss b/packages/starter-kyts/kyt-starter-universall/src/shared-styles/variables.scss new file mode 100644 index 000000000..cb9f65ffa --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universall/src/shared-styles/variables.scss @@ -0,0 +1,3 @@ + +$content-width: 500px; +$padding: 15px; From 0bd4a90e7bdb5fcec3a3cab2a5155c3c8ad52c7e Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 12 Nov 2016 19:40:44 -0500 Subject: [PATCH 11/31] adding starter-static, updating starter-universal name --- packages/kyt-cli/cli/actions/setup.js | 27 +++++---- .../LICENSE | 0 .../starter-kyts/kyt-starter-static/README.md | 30 ++++++++++ .../kyt-starter-static/kyt.config.js | 17 ++++++ .../kyt-starter-static/package.json | 32 ++++++++++ .../prototype.js | 0 .../src/client/Root.js | 0 .../src/client/index.js | 0 .../src/components/App/index.js | 0 .../src/components/App/index.test.js | 0 .../src/components/App/styles.scss | 0 .../src/components/Home/index.js | 0 .../src/components/Home/index.test.js | 0 .../src/components/Home/styles.scss | 0 .../src/components/Tools/index.js | 0 .../src/components/Tools/index.test.js | 0 .../src/components/Tools/styles.scss | 0 .../src/images/icon-kytLogo_large-252x252.svg | 0 .../kyt-starter-static/src/index.ejs | 18 ++++++ .../src/public/kyt-favicon.png | Bin .../src/routes/index.js | 0 .../src/shared-styles/variables.scss | 0 .../kyt-starter-universal/LICENSE | 13 +++++ .../README.md | 0 .../kyt.config.js | 0 .../package.json | 0 .../kyt-starter-universal/prototype.js | 16 +++++ .../kyt-starter-universal/src/client/Root.js | 14 +++++ .../kyt-starter-universal/src/client/index.js | 26 +++++++++ .../src/components/App/index.js | 29 +++++++++ .../src/components/App/index.test.js | 10 ++++ .../src/components/App/styles.scss | 36 ++++++++++++ .../src/components/Home/index.js | 21 +++++++ .../src/components/Home/index.test.js | 10 ++++ .../src/components/Home/styles.scss | 6 ++ .../src/components/Tools/index.js | 27 +++++++++ .../src/components/Tools/index.test.js | 10 ++++ .../src/components/Tools/styles.scss | 6 ++ .../src/images/icon-kytLogo_large-252x252.svg | 55 ++++++++++++++++++ .../src/public/kyt-favicon.png | Bin 0 -> 1297 bytes .../kyt-starter-universal/src/routes/index.js | 40 +++++++++++++ .../src/server/index.js | 0 .../src/server/template.js | 0 .../src/shared-styles/variables.scss | 3 + 44 files changed, 435 insertions(+), 11 deletions(-) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/LICENSE (100%) create mode 100644 packages/starter-kyts/kyt-starter-static/README.md create mode 100644 packages/starter-kyts/kyt-starter-static/kyt.config.js create mode 100644 packages/starter-kyts/kyt-starter-static/package.json rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/prototype.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/client/Root.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/client/index.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/App/index.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/App/index.test.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/App/styles.scss (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/Home/index.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/Home/index.test.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/Home/styles.scss (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/Tools/index.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/Tools/index.test.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/components/Tools/styles.scss (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/images/icon-kytLogo_large-252x252.svg (100%) create mode 100644 packages/starter-kyts/kyt-starter-static/src/index.ejs rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/public/kyt-favicon.png (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/routes/index.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-static}/src/shared-styles/variables.scss (100%) create mode 100644 packages/starter-kyts/kyt-starter-universal/LICENSE rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-universal}/README.md (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-universal}/kyt.config.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-universal}/package.json (100%) create mode 100644 packages/starter-kyts/kyt-starter-universal/prototype.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/client/Root.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/client/index.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/App/index.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/App/index.test.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/App/styles.scss create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/Home/index.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/Home/index.test.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/Home/styles.scss create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.test.js create mode 100644 packages/starter-kyts/kyt-starter-universal/src/components/Tools/styles.scss create mode 100644 packages/starter-kyts/kyt-starter-universal/src/images/icon-kytLogo_large-252x252.svg create mode 100644 packages/starter-kyts/kyt-starter-universal/src/public/kyt-favicon.png create mode 100644 packages/starter-kyts/kyt-starter-universal/src/routes/index.js rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-universal}/src/server/index.js (100%) rename packages/starter-kyts/{kyt-starter-universall => kyt-starter-universal}/src/server/template.js (100%) create mode 100644 packages/starter-kyts/kyt-starter-universal/src/shared-styles/variables.scss diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 0ee98761d..9b0f75913 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -20,20 +20,21 @@ const cliPkgJson = require('../../package.json'); module.exports = (flags, args) => { const date = Date.now(); - const tmpDir = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape - let repoURL = args.repository || 'https://github.com/NYTimes/kyt-starter-universal.git'; - const removeTmpDir = () => shell.rm('-rf', tmpDir); + const tmpRepo = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape + let tmpDir = tmpRepo; + let repoURL = args.repository || 'https://github.com/NYTimes/kyt.git'; + const removeTmpRepo = () => shell.rm('-rf', tmpRepo); let tempPackageJSON; let oldPackageJSON; const bailProcess = (error) => { logger.error(`Failed to setup: ${repoURL}`); if (error) logger.log(error); - removeTmpDir(); + removeTmpRepo(); process.exit(); }; // Comment the following to see verbose shell ouput. - shell.config.silent = true; + // shell.config.silent = true; // Compare the Starter-kyt's package.json kyt.version // configuration to make sure kyt is an expected version. @@ -91,7 +92,7 @@ module.exports = (flags, args) => { // for commands that aren't 1:1 name:script const commandMap = { - 'start': 'node build/server/main.js', + start: 'node build/server/main.js', 'test-watch': 'kyt test -- --watch', 'test-coverage': 'kyt test -- --coverage', }; @@ -264,7 +265,8 @@ module.exports = (flags, args) => { // repo into the user's base direcotry. const createSrcDirectory = () => { const cpSrc = () => { - shell.cp('-r', `${tmpDir}/src`, userRootPath); + const tmpSrcPath = path.join(tmpDir, '/src'); + shell.cp('-r', `${tmpSrcPath}`, userRootPath); logger.task('Created src directory'); }; if (shell.test('-d', srcPath)) { @@ -347,12 +349,12 @@ module.exports = (flags, args) => { createSrcDirectory(); createGitignore(); copyStarterKytFiles(); - removeTmpDir(); + removeTmpRepo(); logger.end(`Done adding starter kyt: ${repoURL}`); }; // First, clean any old cloned repositories. - removeTmpDir(); + removeTmpRepo(); simpleGit.clone(repoURL, tmpDir, {}, afterClone); }; @@ -379,8 +381,11 @@ module.exports = (flags, args) => { }, ]; inquire.prompt(question).then((answer) => { - if (answer.starterChoice === 'Static') { - repoURL = 'https://github.com/NYTimes/kyt-starter-static.git'; + if (answer.starterChoice === 'Universal') { + tmpDir = path.join(tmpRepo, '/packages/starter-kyts/kyt-starter-universal/'); + } + if (answer.starterChoice === 'static') { + tmpDir = path.join(tmpRepo, '/packages/starter-kyts/kyt-starter-static/'); } starterKytSetup(answer.starterChoice); }); diff --git a/packages/starter-kyts/kyt-starter-universall/LICENSE b/packages/starter-kyts/kyt-starter-static/LICENSE similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/LICENSE rename to packages/starter-kyts/kyt-starter-static/LICENSE diff --git a/packages/starter-kyts/kyt-starter-static/README.md b/packages/starter-kyts/kyt-starter-static/README.md new file mode 100644 index 000000000..c18ef2938 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-static/README.md @@ -0,0 +1,30 @@ +# Static React starter-kyt + +This starter-kyt should serve as the base for an advanced client-rendered React app. + +## Installation + +1. Create a new directory and install [kyt](https://github.com/NYTimes/kyt) +2. `node_modules/.bin/kyt setup -r git@github.com:nytimes/kyt-starter-static.git` + +## Tools + +The following are some of the tools included in this starter-kyt: + +- [React](https://facebook.github.io/react/) - Component library +- [React Router](https://github.com/reactjs/react-router) - Server and client routing +- [Sass Modules](https://github.com/css-modules/css-modules) - CSS Modules with a Sass pre-processor for styles +- [Enzyme](https://github.com/airbnb/enzyme) - React component testing +- [html webpack plugin](https://github.com/ampedandwired/html-webpack-plugin) - Builds a static html file + +## Notes on implementation + +- You will find a `src/index.ejs` file which gets compiled to an html fileby the html webpack plugin. See more for configuration in the kyt.config.js. After a build, kyt will copy the html build into `build/public`. + +- As a performance optimization, React Router routes are loaded dynamically and chunked separately using the ES2015 `System.import` directive. See more about [Webpack 2 support](https://gist.github.com/sokra/27b24881210b56bbaff7#code-splitting-with-es6) and [dynamic routing](https://github.com/reactjs/react-router/blob/master/docs/guides/DynamicRouting.md). + +## How To Contribute +Want to build your own starter-kyt? +See directions [here](https://github.com/NYTimes/kyt/docs/Starterkyts.md). + +## Changelog diff --git a/packages/starter-kyts/kyt-starter-static/kyt.config.js b/packages/starter-kyts/kyt-starter-static/kyt.config.js new file mode 100644 index 000000000..906786e1a --- /dev/null +++ b/packages/starter-kyts/kyt-starter-static/kyt.config.js @@ -0,0 +1,17 @@ + +var HtmlWebpackPlugin = require('html-webpack-plugin'); + +module.exports = { + reactHotLoader: true, + debug: false, + hasServer: false, + modifyWebpackConfig: (config, options) => { + if (options.type === 'client') { + config.plugins.push(new HtmlWebpackPlugin({ + template: 'src/index.ejs' + })); + } + + return config; + } +}; diff --git a/packages/starter-kyts/kyt-starter-static/package.json b/packages/starter-kyts/kyt-starter-static/package.json new file mode 100644 index 000000000..ea9fda6cc --- /dev/null +++ b/packages/starter-kyts/kyt-starter-static/package.json @@ -0,0 +1,32 @@ +{ + "name": "kyt-starter-static", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/nytimes/kyt-starter-static.git" + }, + "author": "", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/nytimes/kyt-starter-static/issues" + }, + "homepage": "https://github.com/nytimes/kyt-starter-static#readme", + "kyt": { + "version": "^0.2.0", + "files": ["kyt.config.js"] + }, + "dependencies": { + "enzyme": "^2.4.1", + "html-webpack-plugin": "^2.22.0", + "react": "^15.3.0", + "react-addons-test-utils": "^15.3.0", + "react-dom": "^15.3.0", + "react-router": "^2.6.1" + }, + "devDependencies": { + "kyt": "^0.3.0" + } +} diff --git a/packages/starter-kyts/kyt-starter-universall/prototype.js b/packages/starter-kyts/kyt-starter-static/prototype.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/prototype.js rename to packages/starter-kyts/kyt-starter-static/prototype.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/client/Root.js b/packages/starter-kyts/kyt-starter-static/src/client/Root.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/client/Root.js rename to packages/starter-kyts/kyt-starter-static/src/client/Root.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/client/index.js b/packages/starter-kyts/kyt-starter-static/src/client/index.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/client/index.js rename to packages/starter-kyts/kyt-starter-static/src/client/index.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/App/index.js b/packages/starter-kyts/kyt-starter-static/src/components/App/index.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/App/index.js rename to packages/starter-kyts/kyt-starter-static/src/components/App/index.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/App/index.test.js b/packages/starter-kyts/kyt-starter-static/src/components/App/index.test.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/App/index.test.js rename to packages/starter-kyts/kyt-starter-static/src/components/App/index.test.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/App/styles.scss b/packages/starter-kyts/kyt-starter-static/src/components/App/styles.scss similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/App/styles.scss rename to packages/starter-kyts/kyt-starter-static/src/components/App/styles.scss diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.js b/packages/starter-kyts/kyt-starter-static/src/components/Home/index.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/Home/index.js rename to packages/starter-kyts/kyt-starter-static/src/components/Home/index.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Home/index.test.js b/packages/starter-kyts/kyt-starter-static/src/components/Home/index.test.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/Home/index.test.js rename to packages/starter-kyts/kyt-starter-static/src/components/Home/index.test.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Home/styles.scss b/packages/starter-kyts/kyt-starter-static/src/components/Home/styles.scss similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/Home/styles.scss rename to packages/starter-kyts/kyt-starter-static/src/components/Home/styles.scss diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.js b/packages/starter-kyts/kyt-starter-static/src/components/Tools/index.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.js rename to packages/starter-kyts/kyt-starter-static/src/components/Tools/index.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.test.js b/packages/starter-kyts/kyt-starter-static/src/components/Tools/index.test.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/Tools/index.test.js rename to packages/starter-kyts/kyt-starter-static/src/components/Tools/index.test.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/components/Tools/styles.scss b/packages/starter-kyts/kyt-starter-static/src/components/Tools/styles.scss similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/components/Tools/styles.scss rename to packages/starter-kyts/kyt-starter-static/src/components/Tools/styles.scss diff --git a/packages/starter-kyts/kyt-starter-universall/src/images/icon-kytLogo_large-252x252.svg b/packages/starter-kyts/kyt-starter-static/src/images/icon-kytLogo_large-252x252.svg similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/images/icon-kytLogo_large-252x252.svg rename to packages/starter-kyts/kyt-starter-static/src/images/icon-kytLogo_large-252x252.svg diff --git a/packages/starter-kyts/kyt-starter-static/src/index.ejs b/packages/starter-kyts/kyt-starter-static/src/index.ejs new file mode 100644 index 000000000..14ec2f918 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-static/src/index.ejs @@ -0,0 +1,18 @@ + + + + + + + + + + + + Static kyt + + + +
+ + diff --git a/packages/starter-kyts/kyt-starter-universall/src/public/kyt-favicon.png b/packages/starter-kyts/kyt-starter-static/src/public/kyt-favicon.png similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/public/kyt-favicon.png rename to packages/starter-kyts/kyt-starter-static/src/public/kyt-favicon.png diff --git a/packages/starter-kyts/kyt-starter-universall/src/routes/index.js b/packages/starter-kyts/kyt-starter-static/src/routes/index.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/routes/index.js rename to packages/starter-kyts/kyt-starter-static/src/routes/index.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/shared-styles/variables.scss b/packages/starter-kyts/kyt-starter-static/src/shared-styles/variables.scss similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/shared-styles/variables.scss rename to packages/starter-kyts/kyt-starter-static/src/shared-styles/variables.scss diff --git a/packages/starter-kyts/kyt-starter-universal/LICENSE b/packages/starter-kyts/kyt-starter-universal/LICENSE new file mode 100644 index 000000000..e15a04d32 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2016 The New York Times Company + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this library except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/starter-kyts/kyt-starter-universall/README.md b/packages/starter-kyts/kyt-starter-universal/README.md similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/README.md rename to packages/starter-kyts/kyt-starter-universal/README.md diff --git a/packages/starter-kyts/kyt-starter-universall/kyt.config.js b/packages/starter-kyts/kyt-starter-universal/kyt.config.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/kyt.config.js rename to packages/starter-kyts/kyt-starter-universal/kyt.config.js diff --git a/packages/starter-kyts/kyt-starter-universall/package.json b/packages/starter-kyts/kyt-starter-universal/package.json similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/package.json rename to packages/starter-kyts/kyt-starter-universal/package.json diff --git a/packages/starter-kyts/kyt-starter-universal/prototype.js b/packages/starter-kyts/kyt-starter-universal/prototype.js new file mode 100644 index 000000000..e843e9b52 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/prototype.js @@ -0,0 +1,16 @@ + +// This is your prototyping file. +// It is the entry for the webpack dev server +// when you run the kyt proto command. +import React from 'react'; +import ReactDom from 'react-dom'; + +// Import your component here for easy development +import Home from './src/components/Home'; + +// Attach the component to the root. +const rootEl = document.getElementById('root'); +ReactDom.render( + , + rootEl +); diff --git a/packages/starter-kyts/kyt-starter-universal/src/client/Root.js b/packages/starter-kyts/kyt-starter-universal/src/client/Root.js new file mode 100644 index 000000000..85f4735d3 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/client/Root.js @@ -0,0 +1,14 @@ + +import React from 'react'; +import Router from 'react-router/lib/Router'; +import browserHistory from 'react-router/lib/browserHistory'; +import routes from '../routes'; + +// We need a Root component for React Hot Loading. +function Root() { + return ( + + ); +} + +export default Root; diff --git a/packages/starter-kyts/kyt-starter-universal/src/client/index.js b/packages/starter-kyts/kyt-starter-universal/src/client/index.js new file mode 100644 index 000000000..cb7fbb862 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/client/index.js @@ -0,0 +1,26 @@ + +import React from 'react'; +import { render } from 'react-dom'; +import { AppContainer } from 'react-hot-loader'; +import Root from './Root'; + +const root = document.querySelector('#root'); + +const mount = (RootComponent) => { + render( + + + , + root + ); +}; + +if (module.hot) { + module.hot.accept('./Root', () => { + // eslint-disable-next-line global-require,import/newline-after-import + const RootComponent = require('./Root').default; + mount(RootComponent); + }); +} + +mount(Root); diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/App/index.js b/packages/starter-kyts/kyt-starter-universal/src/components/App/index.js new file mode 100644 index 000000000..5f8277e87 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/App/index.js @@ -0,0 +1,29 @@ + +import React, { PropTypes } from 'react'; +import Link from 'react-router/lib/Link'; +import styles from './styles.scss'; + +function App({ children }) { + return ( +
+ +
    +
  • + Home +
  • +
  • + Tools +
  • +
+
+ {children} +
+
+ ); +} + +App.propTypes = { + children: PropTypes.node, +}; + +export default App; diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/App/index.test.js b/packages/starter-kyts/kyt-starter-universal/src/components/App/index.test.js new file mode 100644 index 000000000..12bfab43f --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/App/index.test.js @@ -0,0 +1,10 @@ + + +import React from 'react'; +import { shallow } from 'enzyme'; +import App from './'; + +it('Test example', () => { + const wrapper = shallow(); + expect(wrapper.is('div')).toBeTruthy(); +}); diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/App/styles.scss b/packages/starter-kyts/kyt-starter-universal/src/components/App/styles.scss new file mode 100644 index 000000000..e73b4294d --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/App/styles.scss @@ -0,0 +1,36 @@ + +@import '../../shared-styles/variables'; + +.header { + text-align: center; +} + +.nav { + width: $content-width; + margin: 0 auto; + padding: $padding; + text-align: center; +} + +.content { + width: $content-width; + margin: $padding auto; +} + +.navItem { + display: inline-block; +} + +.link { + padding: $padding; + color: #00a68f; + font-size: 18px; +} + +.logo { + display: block; + width: 252px; + height: 252px; + margin: $padding auto; + background: url('../../images/icon-kytLogo_large-252x252.svg'); +} diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/Home/index.js b/packages/starter-kyts/kyt-starter-universal/src/components/Home/index.js new file mode 100644 index 000000000..4b4e39f1c --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/Home/index.js @@ -0,0 +1,21 @@ + +import React from 'react'; +import styles from './styles.scss'; + +function Home() { + return ( +
+

+ Welcome to the Universal React Starter-kyt. + This starter kyt should serve as the base for an advanced, + server-rendered React app. +

+

+ Check out the Tools section for an outline of the libraries that + are used in this Starter-kyt. +

+
+ ); +} + +export default Home; diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/Home/index.test.js b/packages/starter-kyts/kyt-starter-universal/src/components/Home/index.test.js new file mode 100644 index 000000000..e74c32d05 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/Home/index.test.js @@ -0,0 +1,10 @@ + + +import React from 'react'; +import { shallow } from 'enzyme'; +import Home from './'; + +it('Test example', () => { + const wrapper = shallow(); + expect(wrapper.is('section')).toBeTruthy(); +}); diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/Home/styles.scss b/packages/starter-kyts/kyt-starter-universal/src/components/Home/styles.scss new file mode 100644 index 000000000..1674218f3 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/Home/styles.scss @@ -0,0 +1,6 @@ + +@import '../../shared-styles/variables'; + +.paragraph + .paragraph { + padding-top: $padding; +} diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.js b/packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.js new file mode 100644 index 000000000..d93d9bc38 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.js @@ -0,0 +1,27 @@ + +import React from 'react'; +import styles from './styles.scss'; + +function Tools() { + return ( +
    +
  • + Express - server-side rendering +
  • +
  • + React - component library +
  • +
  • + React Router - server and browser routing +
  • +
  • + Sass Modules - CSS Modules with a Sass pre-processor for styles +
  • +
  • + Enzyme - React component testing +
  • +
+ ); +} + +export default Tools; diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.test.js b/packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.test.js new file mode 100644 index 000000000..7e396e5e5 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/Tools/index.test.js @@ -0,0 +1,10 @@ + + +import React from 'react'; +import { shallow } from 'enzyme'; +import Tools from './'; + +it('Test example', () => { + const wrapper = shallow(); + expect(wrapper.is('ul')).toBeTruthy(); +}); diff --git a/packages/starter-kyts/kyt-starter-universal/src/components/Tools/styles.scss b/packages/starter-kyts/kyt-starter-universal/src/components/Tools/styles.scss new file mode 100644 index 000000000..660f1dd98 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/components/Tools/styles.scss @@ -0,0 +1,6 @@ + +@import '../../shared-styles/variables'; + +.tool + .tool { + padding-top: 5px; +} diff --git a/packages/starter-kyts/kyt-starter-universal/src/images/icon-kytLogo_large-252x252.svg b/packages/starter-kyts/kyt-starter-universal/src/images/icon-kytLogo_large-252x252.svg new file mode 100644 index 000000000..5e9a43a10 --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/images/icon-kytLogo_large-252x252.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/starter-kyts/kyt-starter-universal/src/public/kyt-favicon.png b/packages/starter-kyts/kyt-starter-universal/src/public/kyt-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..4b418b24c1d7173392c8da1ba4755eacd18a06c3 GIT binary patch literal 1297 zcmV+s1@8KZP) zEnBl9F;;`!jXyO$=&Auptab@iBmu3jCMK;9Ccfw+4?bA*)ui=>pAyrBCW=bZB_@g~ z*hPM~ok?*A^^bla6lPG;ubxpTfb=R4=jWl&-3PVD`RbKb`o z1J0R-{ktcIk0oK1jaRa`>$N?-h9UY4!vO3_RFpwjLkm>0Sl5jRo?7B&%)p+kz}5Q( z08gGFr9uGMK=5g1EdVNV!FQ)ehtT9hrVC6#t9-Q<0BkiM?Ruqa1}%W@AXl&?5fR5U zkK*$Vlqh2yg{jEZf#b)H^j8hQOE2#xMH95Sq7VQs-9ccecjq)V=flU3uvG(irt|qY zoeY(Am?xCtC@daZ;prQrn%Ifqqv;isaK{s!DsC`>O5+r603?PapW8$ch0L>%Qj46< zm@yH-!O8(3xuV#`r5Yi8%Jgkv5G_prb+u4CHf}-@B;M#S0g?GFAhcg{#Q?5c9#1{? z_*0g0?kHJ2_$n;D-6iMB+-+EY<`+w;*PEtNH&>8*;05pgZ|>WlAW$eNzFf>(VdeQvUZ=5C}F*yU*`gc?9Q^u7cYn9D)ydxyY~W^t@R;W&}l)1x7$qC^eOtxUQMfQ!1W z1Bqc+{q;G3`2}aqogLfdN$20%EtOMKKR@cTibo=(oW??!wS-)}oC{L68EqHP*z1M@ z60)#Kg{7UHavnT)2?D=Od9$SFTj6=`jvWAvO%b)J`JuRL0o^0^hdRK8-(4#`9ELm+ z)5+^MZWSplkrV)m_fr%ryIV(Wq-OsPuFR#e(6{&_eAeDrYn;_`1E z)OS7xWnrmEIfW%OocZA!%~uVP2+?A5`$hN5>`lK$BxT^EFWmfCTLbeS94JFX5iKdl z_#$0KVH)3QrGRjw^H<#ypS=Kp!iT?i!}GZg$alx@#f5kY0KISvmFNS7g3k*5S}q$y z#4&FeI$=3E;XrO(Jj(ewKk?R+t@uYb{*blI*iLz!*B^C~_;Nu+|9QGfK&p zC6X0iN{OWY&4ddCd#`KU`-04GX-h7mp|Lm8=f{84Rt3PmfcO=90SPaV3{GQHe@tjq zxt8C(^LK_TO#~upoiJse4C^^w$ptDhFa)S_VsYUjbuD{IgK9Sf5h?esdDFJR(B|!; zrS%c9HT { + System.import('../components/Home') + .then(module => cb(null, module.default)) + .catch((e) => { throw e; }); +}; + +const importTools = (nextState, cb) => { + System.import('../components/Tools') + .then(module => cb(null, module.default)) + .catch((e) => { throw e; }); +}; + +// We use `getComponent` to dynamically load routes. +// https://github.com/reactjs/react-router/blob/master/docs/guides/DynamicRouting.md +const routes = ( + + + + +); + +// Unfortunately, HMR breaks when we dynamically resolve +// routes so we need to require them here as a workaround. +// https://github.com/gaearon/react-hot-loader/issues/288 +if (module.hot) { + require('../components/Home'); // eslint-disable-line global-require + require('../components/Tools'); // eslint-disable-line global-require +} + +export default routes; diff --git a/packages/starter-kyts/kyt-starter-universall/src/server/index.js b/packages/starter-kyts/kyt-starter-universal/src/server/index.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/server/index.js rename to packages/starter-kyts/kyt-starter-universal/src/server/index.js diff --git a/packages/starter-kyts/kyt-starter-universall/src/server/template.js b/packages/starter-kyts/kyt-starter-universal/src/server/template.js similarity index 100% rename from packages/starter-kyts/kyt-starter-universall/src/server/template.js rename to packages/starter-kyts/kyt-starter-universal/src/server/template.js diff --git a/packages/starter-kyts/kyt-starter-universal/src/shared-styles/variables.scss b/packages/starter-kyts/kyt-starter-universal/src/shared-styles/variables.scss new file mode 100644 index 000000000..cb9f65ffa --- /dev/null +++ b/packages/starter-kyts/kyt-starter-universal/src/shared-styles/variables.scss @@ -0,0 +1,3 @@ + +$content-width: 500px; +$padding: 15px; From 896b09e4e5822a822ffa00c48b9b83fe4df7a2d5 Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 12 Nov 2016 20:38:38 -0500 Subject: [PATCH 12/31] setup with static; currently kytconfig is getting installed twice... --- packages/kyt-cli/cli/actions/setup.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 9b0f75913..e7aaa7fd8 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -34,7 +34,7 @@ module.exports = (flags, args) => { }; // Comment the following to see verbose shell ouput. - // shell.config.silent = true; + shell.config.silent = true; // Compare the Starter-kyt's package.json kyt.version // configuration to make sure kyt is an expected version. @@ -337,6 +337,10 @@ module.exports = (flags, args) => { logger.log(error); bailProcess(); } + // TODO: REMOVE THIS WHEN THIS GOES TO MASTER + if(!args.repository) { + shell.exec('cd .kyt-tmp && git checkout monorepo'); + } // eslint-disable-next-line global-require,import/no-dynamic-require tempPackageJSON = require(`${tmpDir}/package.json`); updateUserPackageJSON(false); @@ -355,7 +359,7 @@ module.exports = (flags, args) => { // First, clean any old cloned repositories. removeTmpRepo(); - simpleGit.clone(repoURL, tmpDir, {}, afterClone); + simpleGit.clone(repoURL, tmpRepo, {}, afterClone); }; // default setup flow @@ -384,7 +388,7 @@ module.exports = (flags, args) => { if (answer.starterChoice === 'Universal') { tmpDir = path.join(tmpRepo, '/packages/starter-kyts/kyt-starter-universal/'); } - if (answer.starterChoice === 'static') { + if (answer.starterChoice === 'Static') { tmpDir = path.join(tmpRepo, '/packages/starter-kyts/kyt-starter-static/'); } starterKytSetup(answer.starterChoice); From 96a97f698dc97270d3f1929693b939853c260955 Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 19 Nov 2016 14:24:30 -0500 Subject: [PATCH 13/31] removing kyt.config.js from list of files, in static so it doesnt get double copied --- packages/kyt-cli/cli/actions/setup.js | 6 +++--- packages/starter-kyts/kyt-starter-static/package.json | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index e7aaa7fd8..d6c82f621 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -29,7 +29,7 @@ module.exports = (flags, args) => { const bailProcess = (error) => { logger.error(`Failed to setup: ${repoURL}`); if (error) logger.log(error); - removeTmpRepo(); + // removeTmpRepo(); process.exit(); }; @@ -298,7 +298,7 @@ module.exports = (flags, args) => { const filePath = path.join(userRootPath, file); // If the file name isn't one of the kyt copied files then // we should back up any pre-existing files in the user dir. - if (['.gitignore', '.stylelintrc.json', '.eslintrc.json', '.editorconfig'] + if (['.gitignore', '.stylelintrc.json', '.eslintrc.json', '.editorconfig', 'kyt.config.js'] .indexOf(file) === -1 && (shell.test('-f', filePath) || shell.test('-d', filePath))) { const fileBackup = path.join(userRootPath, `${file}-${date}-bak`); @@ -338,7 +338,7 @@ module.exports = (flags, args) => { bailProcess(); } // TODO: REMOVE THIS WHEN THIS GOES TO MASTER - if(!args.repository) { + if (!args.repository) { shell.exec('cd .kyt-tmp && git checkout monorepo'); } // eslint-disable-next-line global-require,import/no-dynamic-require diff --git a/packages/starter-kyts/kyt-starter-static/package.json b/packages/starter-kyts/kyt-starter-static/package.json index ea9fda6cc..251f1cbb5 100644 --- a/packages/starter-kyts/kyt-starter-static/package.json +++ b/packages/starter-kyts/kyt-starter-static/package.json @@ -16,7 +16,6 @@ "homepage": "https://github.com/nytimes/kyt-starter-static#readme", "kyt": { "version": "^0.2.0", - "files": ["kyt.config.js"] }, "dependencies": { "enzyme": "^2.4.1", From cf39d5b42426a75a6c85428a3af9193a1fea14dc Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 19 Nov 2016 14:30:57 -0500 Subject: [PATCH 14/31] typo --- packages/starter-kyts/kyt-starter-static/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/starter-kyts/kyt-starter-static/package.json b/packages/starter-kyts/kyt-starter-static/package.json index 251f1cbb5..84124db67 100644 --- a/packages/starter-kyts/kyt-starter-static/package.json +++ b/packages/starter-kyts/kyt-starter-static/package.json @@ -15,7 +15,7 @@ }, "homepage": "https://github.com/nytimes/kyt-starter-static#readme", "kyt": { - "version": "^0.2.0", + "version": "^0.2.0" }, "dependencies": { "enzyme": "^2.4.1", From e501d8faef8e2dcc89ffb9392254b3f583a801a5 Mon Sep 17 00:00:00 2001 From: Price Date: Tue, 22 Nov 2016 18:52:04 -0500 Subject: [PATCH 15/31] adding ability to create new directory as part of setup --- packages/kyt-cli/cli/actions/setup.js | 40 ++++++++++++++++++--------- packages/kyt-cli/cli/commands.js | 1 + 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index f0c88ed45..5b6479c9d 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -7,35 +7,49 @@ const simpleGit = require('simple-git')(); const logger = require('kyt-utils/logger'); const semver = require('semver'); const uniq = require('ramda').uniq; -const { - userRootPath, - srcPath, - userPrototypePath, - userKytConfigPath, - userNodeModulesPath, - userPackageJSONPath, -} = require('kyt-utils/paths')(); // eslint-disable-line import/newline-after-import // eslint-disable-next-line import/no-dynamic-require const cliPkgJson = require('../../package.json'); module.exports = (flags, args) => { + // Comment the following to see verbose shell ouput. + shell.config.silent = true; + const checkAndBail = (code) => { + if (code) { + logger.error(`Unable to create directory ${args.directory}. Exiting...`); + process.exit(1); + } + }; + if (args.directory) { + logger.task(`Creating your new project at ${args.directory}`); + let output = shell.mkdir(args.directory); + checkAndBail(output.code); + output = shell.cd(args.directory); + checkAndBail(output.code); + } + const { + userRootPath, + srcPath, + userPrototypePath, + userKytConfigPath, + userNodeModulesPath, + userPackageJSONPath, + } = require('kyt-utils/paths')(); // eslint-disable-line + const date = Date.now(); const tmpRepo = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape let tmpDir = tmpRepo; - let repoURL = args.repository || 'https://github.com/NYTimes/kyt.git'; + const repoURL = args.repository || 'https://github.com/NYTimes/kyt.git'; const removeTmpRepo = () => shell.rm('-rf', tmpRepo); let tempPackageJSON; let oldPackageJSON; + const bailProcess = (error) => { logger.error(`Failed to setup: ${repoURL}`); if (error) logger.log(error); - // removeTmpRepo(); + removeTmpRepo(); process.exit(); }; - // Comment the following to see verbose shell ouput. - shell.config.silent = true; - // Compare the Starter-kyt's package.json kyt.version // configuration to make sure kyt is an expected version. const checkStarterKytVersion = (userPackageJSON) => { diff --git a/packages/kyt-cli/cli/commands.js b/packages/kyt-cli/cli/commands.js index 0305a4903..fec5045d9 100644 --- a/packages/kyt-cli/cli/commands.js +++ b/packages/kyt-cli/cli/commands.js @@ -11,6 +11,7 @@ const loadArgsAndDo = (action) => { program .command('setup') .description('Generate a project from a github url to get started.') + .option('-d, --directory ', 'Directory for your project') .option('-r, --repository [address]', 'Github repository address') .action(() => loadArgsAndDo(setupAction)); From 5d21bd48905828ea2b3f8046bb532795ecf14dad Mon Sep 17 00:00:00 2001 From: Price Date: Tue, 22 Nov 2016 19:08:28 -0500 Subject: [PATCH 16/31] updatinG top level lint commanD --- package.json | 2 +- packages/kyt-utils/.eslintrc.json | 5 +++++ packages/kyt-utils/__tests__/paths.test.js | 2 +- packages/kyt-utils/package.json | 12 +++++++++++- 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 packages/kyt-utils/.eslintrc.json diff --git a/package.json b/package.json index 2e5a90f9d..dda64be11 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "test": "jest --testPathPattern /__tests__/", "e2e": "jest --config ./e2e_tests/jest.config.json --verbose --no-cache", - "lint": "eslint ." + "lint": "cd ./packages/kyt-cli && npm run lint && cd ../kyt-core && npm run lint && cd ../kyt-utils && npm run lint" }, "repository": { "type": "git", diff --git a/packages/kyt-utils/.eslintrc.json b/packages/kyt-utils/.eslintrc.json new file mode 100644 index 000000000..b3ac55f66 --- /dev/null +++ b/packages/kyt-utils/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "../kyt-core/config/.eslintrc.base.json" + ] +} diff --git a/packages/kyt-utils/__tests__/paths.test.js b/packages/kyt-utils/__tests__/paths.test.js index 99524ba62..92aedb533 100644 --- a/packages/kyt-utils/__tests__/paths.test.js +++ b/packages/kyt-utils/__tests__/paths.test.js @@ -1,5 +1,5 @@ describe('paths', () => { - const paths = require('../paths')(); + const paths = require('../paths')(); // eslint-disable-line global-require it('exports the expected properties', () => { ['userRootPath', diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json index 8184d17a9..6f170ce2a 100644 --- a/packages/kyt-utils/package.json +++ b/packages/kyt-utils/package.json @@ -4,7 +4,17 @@ "description": "", "main": "logger.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "lint": "eslint ." + }, + "devDependencies": { + "eslint": "3.6.1", + "eslint-config-airbnb": "12.0.0", + "eslint-plugin-import": "2.0.0", + "eslint-plugin-json": "1.2.0", + "eslint-plugin-jsx-a11y": "2.2.2", + "eslint-plugin-react": "6.3.0", + "jest": "16.0.2" }, "author": "NYTimes", "license": "Apache-2.0" From d1c9c469a739ee3ea5b2a129793ce5a98b223aee Mon Sep 17 00:00:00 2001 From: Price Date: Wed, 23 Nov 2016 14:31:11 -0500 Subject: [PATCH 17/31] moving enzyme to devDependencies for testing --- packages/kyt-cli/cli/actions/setup.js | 16 ++++++++++++++-- .../kyt-starter-universal/package.json | 4 +++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 5b6479c9d..15fad502d 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -71,17 +71,29 @@ module.exports = (flags, args) => { // Adds dependencies from the starter-kyts package.json const updatePackageJSONDependencies = (packageJson) => { const tempDependencies = tempPackageJSON.dependencies || {}; - + const tempDevDependencies = tempPackageJSON.devDependencies || {}; // In case the starter kyt used `kyt` as a dependency. if (tempDependencies.kyt) { Reflect.deleteProperty(tempDependencies, 'kyt'); } + if (tempDevDependencies.kyt) { + Reflect.deleteProperty(tempDevDependencies, 'kyt'); + } packageJson.dependencies = Object.assign( packageJson.dependencies || {}, - tempPackageJSON.dependencies + tempDependencies ); + // Copies over dev dependencies + if (tempDevDependencies) { + console.log('happening'); + packageJson.devDependencies = Object.assign( + packageJson.devDependencies || {}, + tempDevDependencies + ); + } + // Add kyt to list of dev dependencies if its not there // eslint-disable-next-line max-len if (!packageJson.dependencies.kyt && !(packageJson.devDependencies && packageJson.devDependencies.kyt)) { diff --git a/packages/starter-kyts/kyt-starter-universal/package.json b/packages/starter-kyts/kyt-starter-universal/package.json index 207296e93..c71299a2f 100644 --- a/packages/starter-kyts/kyt-starter-universal/package.json +++ b/packages/starter-kyts/kyt-starter-universal/package.json @@ -20,11 +20,13 @@ }, "dependencies": { "compression": "^1.6.2", - "enzyme": "^2.4.1", "express": "^4.14.0", "react": "^15.3.0", "react-addons-test-utils": "^15.3.0", "react-dom": "^15.3.0", "react-router": "^2.6.1" + }, + "devDependencies": { + "enzyme": "^2.4.1" } } From f00a57e15943a12103777bb4d2ed4be40926964b Mon Sep 17 00:00:00 2001 From: Price Date: Wed, 23 Nov 2016 14:36:05 -0500 Subject: [PATCH 18/31] lint --- packages/kyt-cli/cli/actions/setup.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 15fad502d..28e1ac068 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -87,7 +87,6 @@ module.exports = (flags, args) => { // Copies over dev dependencies if (tempDevDependencies) { - console.log('happening'); packageJson.devDependencies = Object.assign( packageJson.devDependencies || {}, tempDevDependencies From 30debd54fce705738382dbd3aba4d42295595701 Mon Sep 17 00:00:00 2001 From: Price Date: Wed, 23 Nov 2016 15:20:31 -0500 Subject: [PATCH 19/31] sync up eslint dependencies; changelog docs; moving some starter-kyt dependencies into dev dependencies --- .travis.yml | 2 +- CHANGELOG.md | 18 ++++++++++++++++++ package.json | 8 +------- packages/kyt-cli/package.json | 12 ++++++------ packages/kyt-core/package.json | 3 +-- packages/kyt-utils/package.json | 8 ++++---- .../kyt-starter-static/package.json | 8 ++++---- .../kyt-starter-universal/package.json | 6 +++--- 8 files changed, 38 insertions(+), 27 deletions(-) diff --git a/.travis.yml b/.travis.yml index 46e719874..56109d593 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: node_js node_js: - 6.0 -script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install && cd ../.. && npm test && npm run e2e +script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install && cd ../.. && npm run lint && npm test && npm run e2e diff --git a/CHANGELOG.md b/CHANGELOG.md index 25e872f2b..8302e8b97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,24 @@ ## Master +## 0.4.0 (TBD) + +### BREAKING CHANGES + +#### Monorepo +kyt is now a mono repo with several packages +1. kyt-cli - A globally installed package for project setup + - setup command now can create a new project directory with the -d flag. + `kyt-cli setup -d myDirectory` + - setup now supports copying devDependencies from starter-kyts +2. kyt-core - The kyt build and dev systems. Used as a project dependency + - `setup` is now deprecated as part of kyt-core. It can be found in kyt-cli + - `start` now runs the node server without a kyt wrapped command. This means kyt can be installed as a dev dependency +3. kyt-utils - Shared kyt code. Not to be used independently +4. starter-kyts - kyt-starter-static and kyt-starter-universal now live in the yt repo. + +e2e tests have been pulled to the top level and will be used to test all packages. + ## 0.3.0 (October 25, 2016) ### BREAKING CHANGES diff --git a/package.json b/package.json index dda64be11..07cdf28ab 100644 --- a/package.json +++ b/package.json @@ -24,12 +24,6 @@ "dependencies": { "jest": "16.0.2", "ps-tree": "1.1.0", - "shelljs": "0.7.5", - "eslint": "3.8.1", - "eslint-config-airbnb": "12.0.0", - "eslint-plugin-import": "1.16.0", - "eslint-plugin-json": "1.2.0", - "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.4.1" + "shelljs": "0.7.5" } } diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index 1a73a3ee1..bd059f3f2 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -12,21 +12,21 @@ }, "license": "Apache-2.0", "devDependencies": { - "eslint": "3.6.1", + "eslint": "3.8.1", "eslint-config-airbnb": "12.0.0", - "eslint-plugin-import": "2.0.0", + "eslint-plugin-import": "1.16.0", "eslint-plugin-json": "1.2.0", - "eslint-plugin-jsx-a11y": "2.2.2", - "eslint-plugin-react": "6.3.0", + "eslint-plugin-jsx-a11y": "2.2.3", + "eslint-plugin-react": "6.4.1", "jest": "16.0.2" }, "dependencies": { "commander": "2.9.0", - "inquirer": "1.2.2", + "inquirer": "1.2.3", "kyt-utils": "file:../kyt-utils", "ramda": "0.22.1", "semver": "5.3.0", "shelljs": "0.7.5", - "simple-git": "1.59.0" + "simple-git": "1.62.0" } } diff --git a/packages/kyt-core/package.json b/packages/kyt-core/package.json index ebdd94319..02af75c87 100644 --- a/packages/kyt-core/package.json +++ b/packages/kyt-core/package.json @@ -67,8 +67,7 @@ "ramda": "0.22.1", "react-hot-loader": "3.0.0-beta.5", "sass-loader": "4.0.2", - "semver": "5.3.0", - "shelljs": "0.7.4", + "shelljs": "0.7.5", "strip-ansi": "3.0.1", "style-loader": "0.13.1", "stylelint": "7.5.0", diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json index 6f170ce2a..7446b320d 100644 --- a/packages/kyt-utils/package.json +++ b/packages/kyt-utils/package.json @@ -8,12 +8,12 @@ "lint": "eslint ." }, "devDependencies": { - "eslint": "3.6.1", + "eslint": "3.8.1", "eslint-config-airbnb": "12.0.0", - "eslint-plugin-import": "2.0.0", + "eslint-plugin-import": "1.16.0", "eslint-plugin-json": "1.2.0", - "eslint-plugin-jsx-a11y": "2.2.2", - "eslint-plugin-react": "6.3.0", + "eslint-plugin-jsx-a11y": "2.2.3", + "eslint-plugin-react": "6.4.1", "jest": "16.0.2" }, "author": "NYTimes", diff --git a/packages/starter-kyts/kyt-starter-static/package.json b/packages/starter-kyts/kyt-starter-static/package.json index 84124db67..98f237f8d 100644 --- a/packages/starter-kyts/kyt-starter-static/package.json +++ b/packages/starter-kyts/kyt-starter-static/package.json @@ -15,17 +15,17 @@ }, "homepage": "https://github.com/nytimes/kyt-starter-static#readme", "kyt": { - "version": "^0.2.0" + "version": "^0.3.0" }, "dependencies": { - "enzyme": "^2.4.1", "html-webpack-plugin": "^2.22.0", "react": "^15.3.0", - "react-addons-test-utils": "^15.3.0", "react-dom": "^15.3.0", "react-router": "^2.6.1" }, "devDependencies": { - "kyt": "^0.3.0" + "kyt": "^0.3.0", + "enzyme": "^2.4.1", + "react-addons-test-utils": "^15.3.0" } } diff --git a/packages/starter-kyts/kyt-starter-universal/package.json b/packages/starter-kyts/kyt-starter-universal/package.json index c71299a2f..254fc86dd 100644 --- a/packages/starter-kyts/kyt-starter-universal/package.json +++ b/packages/starter-kyts/kyt-starter-universal/package.json @@ -1,5 +1,5 @@ { - "name": "wf-kyt-starter-universal", + "name": "kyt-starter-universal", "version": "1.0.0", "description": "", "main": "index.js", @@ -22,11 +22,11 @@ "compression": "^1.6.2", "express": "^4.14.0", "react": "^15.3.0", - "react-addons-test-utils": "^15.3.0", "react-dom": "^15.3.0", "react-router": "^2.6.1" }, "devDependencies": { - "enzyme": "^2.4.1" + "enzyme": "^2.4.1", + "react-addons-test-utils": "^15.3.0" } } From d67a1e55dc1697658bf27dc938213ff35e780699 Mon Sep 17 00:00:00 2001 From: Price Date: Wed, 23 Nov 2016 15:40:02 -0500 Subject: [PATCH 20/31] updating travis command --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 56109d593..2d3b42d12 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: node_js node_js: - 6.0 -script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install && cd ../.. && npm run lint && npm test && npm run e2e +script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install cd ../kyt-utils && npm install && cd ../.. && npm run lint && npm test && npm run e2e From 72be9f3b36223efefecf8b326823166b16bbcd94 Mon Sep 17 00:00:00 2001 From: Price Date: Wed, 23 Nov 2016 15:44:16 -0500 Subject: [PATCH 21/31] more && --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2d3b42d12..026dd861b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,4 @@ language: node_js node_js: - 6.0 -script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install cd ../kyt-utils && npm install && cd ../.. && npm run lint && npm test && npm run e2e +script: cd packages/kyt-core && npm install && cd ../kyt-cli && npm install && cd ../kyt-utils && npm install && cd ../.. && npm run lint && npm install && npm test && npm run e2e From 7ca1266c8104cf1eba783af3c1ecf31ed21b0849 Mon Sep 17 00:00:00 2001 From: Price Date: Sat, 3 Dec 2016 11:54:16 -0500 Subject: [PATCH 22/31] cleanup; kyt now gets added as a devDepency in existingProjectSetup --- CHANGELOG.md | 4 +- packages/kyt-cli/cli/actions/setup.js | 84 ++++++++++++++++----------- 2 files changed, 52 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8302e8b97..6bcede6e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ ### BREAKING CHANGES -#### Monorepo +#### MONOREPO kyt is now a mono repo with several packages 1. kyt-cli - A globally installed package for project setup - setup command now can create a new project directory with the -d flag. @@ -17,7 +17,7 @@ kyt is now a mono repo with several packages 3. kyt-utils - Shared kyt code. Not to be used independently 4. starter-kyts - kyt-starter-static and kyt-starter-universal now live in the yt repo. -e2e tests have been pulled to the top level and will be used to test all packages. +e2e tests have been pulled to the top level and will be used to test all packages. ## 0.3.0 (October 25, 2016) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 28e1ac068..0092102cc 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -19,6 +19,7 @@ module.exports = (flags, args) => { process.exit(1); } }; + // Creates project directory if one is specified if (args.directory) { logger.task(`Creating your new project at ${args.directory}`); let output = shell.mkdir(args.directory); @@ -37,12 +38,13 @@ module.exports = (flags, args) => { const date = Date.now(); const tmpRepo = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape + // For passed starter-kyts the root of the starter-kyt is the root of the repo let tmpDir = tmpRepo; const repoURL = args.repository || 'https://github.com/NYTimes/kyt.git'; - const removeTmpRepo = () => shell.rm('-rf', tmpRepo); let tempPackageJSON; let oldPackageJSON; + const removeTmpRepo = () => shell.rm('-rf', tmpRepo); const bailProcess = (error) => { logger.error(`Failed to setup: ${repoURL}`); if (error) logger.log(error); @@ -50,24 +52,37 @@ module.exports = (flags, args) => { process.exit(); }; - // Compare the Starter-kyt's package.json kyt.version + // Compare the starter-kyt's package.json kyt.version // configuration to make sure kyt is an expected version. const checkStarterKytVersion = (userPackageJSON) => { - const kytStarterVersion = (tempPackageJSON.kyt && tempPackageJSON.kyt.version) || null; - if (kytStarterVersion) { + const kytStarterPreferredVersion = (tempPackageJSON.kyt && tempPackageJSON.kyt.version) || null; + if (kytStarterPreferredVersion) { // Look everywhere for kyt const kytVersion = (userPackageJSON.devDependencies && userPackageJSON.devDependencies.kyt) || (userPackageJSON.dependencies && userPackageJSON.dependencies.kyt); if (semver.valid(kytVersion)) { - if (!semver.satisfies(kytVersion, kytStarterVersion)) { + if (!semver.satisfies(kytVersion, kytStarterPreferredVersion)) { // eslint-disable-next-line max-len - logger.warn(`${tempPackageJSON.name} requires kyt version ${kytStarterVersion} but kyt ${kytVersion} is installed.`); + logger.warn(`${tempPackageJSON.name} requires kyt version ${kytStarterPreferredVersion} but kyt ${kytVersion} is installed.`); } } } }; + // Add kyt to list of dev dependencies if its not there + const addKytDevDependency = (packageJson) => { + // eslint-disable-next-line max-len + // check to see if kyt is in dependencies or devDependencies + if (!(packageJson.dependencies && packageJson.dependencies.kyt) && + !(packageJson.devDependencies && packageJson.devDependencies.kyt)) { + const output = shell.exec('npm info kyt version'); + const kytVersion = output.stdout.trim(); + packageJson.devDependencies = packageJson.devDependencies || {}; + packageJson.devDependencies.kyt = kytVersion; + } + }; + // Adds dependencies from the starter-kyts package.json const updatePackageJSONDependencies = (packageJson) => { const tempDependencies = tempPackageJSON.dependencies || {}; @@ -93,14 +108,7 @@ module.exports = (flags, args) => { ); } - // Add kyt to list of dev dependencies if its not there - // eslint-disable-next-line max-len - if (!packageJson.dependencies.kyt && !(packageJson.devDependencies && packageJson.devDependencies.kyt)) { - const output = shell.exec('npm info kyt version'); - const kytVersion = output.stdout.trim(); - packageJson.devDependencies = packageJson.devDependencies || {}; - packageJson.devDependencies.kyt = kytVersion; - } + addKytDevDependency(packageJson); logger.task('Added new dependencies to package.json'); return packageJson; @@ -150,8 +158,8 @@ module.exports = (flags, args) => { } } - // If the command is from a Starter-kyt then - // we need to copy in the Starter-kyt value. + // If the command is from a starter-kyt then + // we need to copy in the starter-kyt value. if (tempScripts.indexOf(command) > -1) { packageJson.scripts[commandName] = tempPackageJSON.scripts[command]; } else { @@ -165,7 +173,7 @@ module.exports = (flags, args) => { // Add dependencies, scripts and other package to // the user's package.json configuration. - const updateUserPackageJSON = (defaultMode) => { + const updateUserPackageJSON = (existingProject) => { let userPackageJSON; // Create a package.json definition if // the user doesn't already have one. @@ -181,9 +189,12 @@ module.exports = (flags, args) => { oldPackageJSON = Object.assign({}, userPackageJSON); // Add dependencies from starter-kyts - if (!defaultMode) { + if (!existingProject) { userPackageJSON = updatePackageJSONDependencies(userPackageJSON); checkStarterKytVersion(userPackageJSON); + } else { + // exisitng projects should also have kyt as a devDependency + addKytDevDependency(userPackageJSON); } // Add scripts userPackageJSON = addPackageJsonScripts(userPackageJSON); @@ -331,7 +342,7 @@ module.exports = (flags, args) => { const filePath = path.join(userRootPath, file); // If the file name isn't one of the kyt copied files then // we should back up any pre-existing files in the user dir. - if (['.gitignore', '.stylelintrc.json', '.eslintrc.json', '.editorconfig', 'kyt.config.js'] + if (['.gitignore', '.stylelintrc.json', '.eslintrc.json', '.editorconfig', 'kyt.config.js', 'prototype.js'] .indexOf(file) === -1 && (shell.test('-f', filePath) || shell.test('-d', filePath))) { const fileBackup = path.join(userRootPath, `${file}-${date}-bak`); @@ -355,12 +366,12 @@ module.exports = (flags, args) => { shell.mv(userPrototypePath, prototypeBackup); logger.info(`Backed up current prototype file to: ${prototypeBackup}`); } - // Copy the prototype file from the starter kit into the users repo + // Copy the prototype file from the starter-kyt into the users repo shell.cp(starterProto, userPrototypePath); logger.task('copied prototype.js file into root'); }; - // setup flow for starter-kyts + // setup tasks for starter-kyts const starterKytSetup = (starterName) => { starterName = starterName || 'specified'; logger.start(`Setting up the ${starterName} starter-kyt`); @@ -395,18 +406,6 @@ module.exports = (flags, args) => { simpleGit.clone(repoURL, tmpRepo, {}, afterClone); }; - // default setup flow - const defaultSetup = () => { - logger.start('Setting up kyt'); - updateUserPackageJSON(true); - createEditorconfigLink(); - createESLintFile(); - createStylelintFile(); - createKytConfig(); - createGitignore(); - logger.end('Done setting up kyt'); - }; - const starterKytPrompt = () => { const question = [ { @@ -428,6 +427,8 @@ module.exports = (flags, args) => { }); }; + // Runs setup tasks for list of starter-kyts + // or flag specified starter-kyt const callStarterSetup = () => { if (args.repository) { starterKytSetup(); @@ -460,6 +461,18 @@ module.exports = (flags, args) => { } }; + // setup tasks for setup in existing project + const existingProjectSetup = () => { + logger.start('Setting up kyt'); + updateUserPackageJSON(true); + createEditorconfigLink(); + createESLintFile(); + createStylelintFile(); + createKytConfig(); + createGitignore(); + logger.end('Done setting up kyt'); + }; + // Selects type of setup const setupPrompt = () => { // Skip starter-kyt questions if they've already supplied a repo name @@ -478,12 +491,15 @@ module.exports = (flags, args) => { if (answer.setupStarter) { srcPrompt(); } else { - defaultSetup(); + existingProjectSetup(); } }); } }; + // Checks to see if user is running current version of kyt-cli + // Gives option to exit if version is old + // runs setup const checkCliVersionPrompt = () => { const currentVersion = cliPkgJson.version; const output = shell.exec('npm info kyt-cli version'); From 5700ddb47df7332847062b33ed437d2de4f23c78 Mon Sep 17 00:00:00 2001 From: Price Date: Sun, 4 Dec 2016 18:58:02 -0500 Subject: [PATCH 23/31] adds kyt start deprecation command --- packages/kyt-core/cli/commands.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/kyt-core/cli/commands.js b/packages/kyt-core/cli/commands.js index 50bc4acbf..e23b71f58 100755 --- a/packages/kyt-core/cli/commands.js +++ b/packages/kyt-core/cli/commands.js @@ -78,4 +78,11 @@ program logger.error('Setup is now part of kyt-cli. \n npm install -g kyt-cli'); }); +program + .command('start') + .description('deprecated') + .action(() => { + logger.error('kyt start is deprecated. \n Run the server with: node build/server/main.js'); + }); + program.parse(process.argv); From 023b684e7b688bfc457145b17bfa2bfc12b1f0fe Mon Sep 17 00:00:00 2001 From: Price Date: Tue, 6 Dec 2016 21:42:46 -0500 Subject: [PATCH 24/31] updating logging for setup; version check will now be based off dependency version in starter kyt rather than kyt.version --- e2e_tests/tests/cli.test.js | 3 ++- packages/kyt-cli/cli/actions/setup.js | 24 ++++++++++++------- .../kyt-starter-static/package.json | 3 --- .../kyt-starter-universal/package.json | 3 --- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/e2e_tests/tests/cli.test.js b/e2e_tests/tests/cli.test.js index 7c2e84d7f..e599025a2 100644 --- a/e2e_tests/tests/cli.test.js +++ b/e2e_tests/tests/cli.test.js @@ -25,7 +25,8 @@ describe('KYT CLI', () => { const output = shell.exec(`node_modules/.bin/kyt-cli setup -r ${setupURL}`); expect(output.code).toBe(0); const setupArr = output.stdout.split('\n'); - expect(setupArr.includes('🔥 Setting up the specified starter-kyt')).toBe(true); + expect(setupArr.includes('🔥 Setting up your new kyt project...')).toBe(true); + expect(setupArr.includes('👍 Setting up the specified starter-kyt')).toBe(true); expect(setupArr.includes('👍 Added kyt scripts into your package.json scripts')).toBe(true); expect(setupArr.includes('👍 Added new dependencies to package.json')).toBe(true); expect(setupArr.includes('👍 Installed new modules')).toBe(true); diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 0092102cc..2bce0a392 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -11,6 +11,7 @@ const uniq = require('ramda').uniq; const cliPkgJson = require('../../package.json'); module.exports = (flags, args) => { + logger.start('Setting up your new kyt project...'); // Comment the following to see verbose shell ouput. shell.config.silent = true; const checkAndBail = (code) => { @@ -55,7 +56,10 @@ module.exports = (flags, args) => { // Compare the starter-kyt's package.json kyt.version // configuration to make sure kyt is an expected version. const checkStarterKytVersion = (userPackageJSON) => { - const kytStarterPreferredVersion = (tempPackageJSON.kyt && tempPackageJSON.kyt.version) || null; + const kytStarterPreferredVersion = + (tempPackageJSON.dependencies && tempPackageJSON.dependencies.kyt) + || (tempPackageJSON.devDependencies && tempPackageJSON.devDependencies.kyt) + || null; if (kytStarterPreferredVersion) { // Look everywhere for kyt const kytVersion = @@ -68,16 +72,21 @@ module.exports = (flags, args) => { } } } + return kytStarterPreferredVersion; }; // Add kyt to list of dev dependencies if its not there - const addKytDevDependency = (packageJson) => { + const addKytDevDependency = (packageJson, kytPrefVersion) => { // eslint-disable-next-line max-len // check to see if kyt is in dependencies or devDependencies if (!(packageJson.dependencies && packageJson.dependencies.kyt) && !(packageJson.devDependencies && packageJson.devDependencies.kyt)) { - const output = shell.exec('npm info kyt version'); - const kytVersion = output.stdout.trim(); + let kytVersion = kytPrefVersion; + // If a version wasn't specified, install latest + if (!kytVersion) { + const output = shell.exec('npm info kyt version'); + kytVersion = output.stdout.trim(); + } packageJson.devDependencies = packageJson.devDependencies || {}; packageJson.devDependencies.kyt = kytVersion; } @@ -108,8 +117,6 @@ module.exports = (flags, args) => { ); } - addKytDevDependency(packageJson); - logger.task('Added new dependencies to package.json'); return packageJson; }; @@ -190,8 +197,9 @@ module.exports = (flags, args) => { // Add dependencies from starter-kyts if (!existingProject) { + const kytPrefVersion = checkStarterKytVersion(userPackageJSON); userPackageJSON = updatePackageJSONDependencies(userPackageJSON); - checkStarterKytVersion(userPackageJSON); + addKytDevDependency(userPackageJSON, kytPrefVersion); } else { // exisitng projects should also have kyt as a devDependency addKytDevDependency(userPackageJSON); @@ -374,7 +382,7 @@ module.exports = (flags, args) => { // setup tasks for starter-kyts const starterKytSetup = (starterName) => { starterName = starterName || 'specified'; - logger.start(`Setting up the ${starterName} starter-kyt`); + logger.task(`Setting up the ${starterName} starter-kyt`); const afterClone = (error) => { if (error) { logger.error('There was a problem cloning the repository'); diff --git a/packages/starter-kyts/kyt-starter-static/package.json b/packages/starter-kyts/kyt-starter-static/package.json index 98f237f8d..a0faffce6 100644 --- a/packages/starter-kyts/kyt-starter-static/package.json +++ b/packages/starter-kyts/kyt-starter-static/package.json @@ -14,9 +14,6 @@ "url": "https://github.com/nytimes/kyt-starter-static/issues" }, "homepage": "https://github.com/nytimes/kyt-starter-static#readme", - "kyt": { - "version": "^0.3.0" - }, "dependencies": { "html-webpack-plugin": "^2.22.0", "react": "^15.3.0", diff --git a/packages/starter-kyts/kyt-starter-universal/package.json b/packages/starter-kyts/kyt-starter-universal/package.json index 254fc86dd..98537ec69 100644 --- a/packages/starter-kyts/kyt-starter-universal/package.json +++ b/packages/starter-kyts/kyt-starter-universal/package.json @@ -15,9 +15,6 @@ "url": "https://github.com/nytm/wf-kyt-starter-universal/issues" }, "homepage": "https://github.com/nytm/wf-kyt-starter-universal#readme", - "kyt": { - "version": "^0.3.0" - }, "dependencies": { "compression": "^1.6.2", "express": "^4.14.0", From b0ec1a7c6ea97b9a0ebd2dbae0c590ce8abf132d Mon Sep 17 00:00:00 2001 From: Price Date: Fri, 9 Dec 2016 13:40:51 -0500 Subject: [PATCH 25/31] code review feedback --- CHANGELOG.md | 6 ++---- packages/kyt-cli/cli/actions/setup.js | 3 +-- packages/kyt-cli/cli/commands.js | 4 ++-- packages/kyt-cli/package.json | 2 +- packages/kyt-utils/package.json | 2 +- 5 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bcede6e8..f8abba8fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,10 @@ ## Master -## 0.4.0 (TBD) - ### BREAKING CHANGES #### MONOREPO -kyt is now a mono repo with several packages +kyt is now a monorepo with several packages 1. kyt-cli - A globally installed package for project setup - setup command now can create a new project directory with the -d flag. `kyt-cli setup -d myDirectory` @@ -15,7 +13,7 @@ kyt is now a mono repo with several packages - `setup` is now deprecated as part of kyt-core. It can be found in kyt-cli - `start` now runs the node server without a kyt wrapped command. This means kyt can be installed as a dev dependency 3. kyt-utils - Shared kyt code. Not to be used independently -4. starter-kyts - kyt-starter-static and kyt-starter-universal now live in the yt repo. +4. starter-kyts - kyt-starter-static and kyt-starter-universal now live in the kyt repo. e2e tests have been pulled to the top level and will be used to test all packages. diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index 2bce0a392..a16e5a69f 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -7,7 +7,6 @@ const simpleGit = require('simple-git')(); const logger = require('kyt-utils/logger'); const semver = require('semver'); const uniq = require('ramda').uniq; -// eslint-disable-next-line import/no-dynamic-require const cliPkgJson = require('../../package.json'); module.exports = (flags, args) => { @@ -38,7 +37,7 @@ module.exports = (flags, args) => { } = require('kyt-utils/paths')(); // eslint-disable-line const date = Date.now(); - const tmpRepo = path.resolve(userRootPath, '\.kyt-tmp'); // eslint-disable-line no-useless-escape + const tmpRepo = path.resolve(userRootPath, '.kyt-tmp'); // eslint-disable-line no-useless-escape // For passed starter-kyts the root of the starter-kyt is the root of the repo let tmpDir = tmpRepo; const repoURL = args.repository || 'https://github.com/NYTimes/kyt.git'; diff --git a/packages/kyt-cli/cli/commands.js b/packages/kyt-cli/cli/commands.js index fec5045d9..6ecb268b7 100644 --- a/packages/kyt-cli/cli/commands.js +++ b/packages/kyt-cli/cli/commands.js @@ -11,8 +11,8 @@ const loadArgsAndDo = (action) => { program .command('setup') .description('Generate a project from a github url to get started.') - .option('-d, --directory ', 'Directory for your project') - .option('-r, --repository [address]', 'Github repository address') + .option('-d, --directory ', 'Optional: Directory for your project. Defaults to your current working directory.') + .option('-r, --repository [address]', 'Optional: Github repository address') .action(() => loadArgsAndDo(setupAction)); diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index bd059f3f2..4323d7953 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -1,6 +1,6 @@ { "name": "kyt-cli", - "version": "0.0.0", + "version": "0.0.1", "description": "", "main": "index.js", "bin": { diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json index 7446b320d..a40f55117 100644 --- a/packages/kyt-utils/package.json +++ b/packages/kyt-utils/package.json @@ -1,6 +1,6 @@ { "name": "kyt-utils", - "version": "0.0.0", + "version": "0.0.1", "description": "", "main": "logger.js", "scripts": { From fcfe47c5e4566699bc7aa0a609d496552e23479d Mon Sep 17 00:00:00 2001 From: Price Date: Fri, 9 Dec 2016 14:22:03 -0500 Subject: [PATCH 26/31] prepping kyt-utils for prepublish --- packages/kyt-utils/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json index a40f55117..63b820507 100644 --- a/packages/kyt-utils/package.json +++ b/packages/kyt-utils/package.json @@ -1,6 +1,6 @@ { "name": "kyt-utils", - "version": "0.0.1", + "version": "0.0.1-alpha.1", "description": "", "main": "logger.js", "scripts": { From 30faa6df182aa8aca76333ea2fc57750e7f9baae Mon Sep 17 00:00:00 2001 From: delambo Date: Fri, 9 Dec 2016 14:29:33 -0500 Subject: [PATCH 27/31] update utils package.json --- packages/kyt-utils/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json index 63b820507..b36a2cddf 100644 --- a/packages/kyt-utils/package.json +++ b/packages/kyt-utils/package.json @@ -1,7 +1,7 @@ { "name": "kyt-utils", "version": "0.0.1-alpha.1", - "description": "", + "description": "A shared kyt utility library.", "main": "logger.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", From 5b7a365e53aed325ae911720609851e3e736b3ec Mon Sep 17 00:00:00 2001 From: Price Date: Fri, 9 Dec 2016 14:43:33 -0500 Subject: [PATCH 28/31] update kyt-utils to point to npm --- packages/kyt-cli/package.json | 2 +- packages/kyt-core/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index 4323d7953..93336ac26 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -23,7 +23,7 @@ "dependencies": { "commander": "2.9.0", "inquirer": "1.2.3", - "kyt-utils": "file:../kyt-utils", + "kyt-utils": "0.0.1-alpha.1", "ramda": "0.22.1", "semver": "5.3.0", "shelljs": "0.7.5", diff --git a/packages/kyt-core/package.json b/packages/kyt-core/package.json index 02af75c87..f8f9e5021 100644 --- a/packages/kyt-core/package.json +++ b/packages/kyt-core/package.json @@ -59,7 +59,7 @@ "install": "0.8.1", "jest": "16.0.1", "json-loader": "0.5.4", - "kyt-utils": "file:../kyt-utils", + "kyt-utils": "0.0.1-alpha.1", "node-sass": "3.10.1", "nodemon": "1.10.2", "postcss-loader": "1.0.0", From b8489c0d78647dcdef5d5d1b226fae7d89a06df9 Mon Sep 17 00:00:00 2001 From: Price Date: Fri, 9 Dec 2016 14:46:42 -0500 Subject: [PATCH 29/31] removing branch specific code and changing cli version to alpha to prep for publish after merge --- packages/kyt-cli/cli/actions/setup.js | 4 ---- packages/kyt-cli/package.json | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/kyt-cli/cli/actions/setup.js b/packages/kyt-cli/cli/actions/setup.js index a16e5a69f..6bf0c78e3 100644 --- a/packages/kyt-cli/cli/actions/setup.js +++ b/packages/kyt-cli/cli/actions/setup.js @@ -388,10 +388,6 @@ module.exports = (flags, args) => { logger.log(error); bailProcess(); } - // TODO: REMOVE THIS WHEN THIS GOES TO MASTER - if (!args.repository) { - shell.exec('cd .kyt-tmp && git checkout monorepo'); - } // eslint-disable-next-line global-require,import/no-dynamic-require tempPackageJSON = require(`${tmpDir}/package.json`); updateUserPackageJSON(false); diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index 93336ac26..55456fec1 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -1,6 +1,6 @@ { "name": "kyt-cli", - "version": "0.0.1", + "version": "0.0.1-alpha.1", "description": "", "main": "index.js", "bin": { From 858ce72feacefe4648c92852389cb07532754ee9 Mon Sep 17 00:00:00 2001 From: delambo Date: Fri, 9 Dec 2016 15:53:01 -0500 Subject: [PATCH 30/31] moves package.json.scripts.lint to top level package.json --- .eslintrc.json | 31 ------------------- package.json | 2 +- packages/kyt-cli/.eslintrc.json | 5 --- .../config/__tests__/kyt.user.config.test.js | 2 ++ packages/kyt-cli/package.json | 9 +----- packages/kyt-core/.eslintrc.json | 29 +---------------- packages/kyt-core/cli/__tests__/index.test.js | 2 ++ .../cli/actions/__tests__/dev.test.js | 2 ++ .../cli/actions/__tests__/lint.test.js | 2 ++ .../cli/actions/__tests__/lintStyle.test.js | 2 ++ .../cli/actions/__tests__/proto.test.js | 2 ++ packages/kyt-core/package.json | 1 - .../utils/__tests__/ifPortIsFreeDo.test.js | 1 + .../utils/__tests__/kytConfig.test.js | 2 ++ .../utils/__tests__/printAssets.test.js | 2 ++ .../utils/__tests__/webpackCompiler.test.js | 2 ++ packages/kyt-utils/.eslintrc.json | 5 --- packages/kyt-utils/package.json | 9 +----- 18 files changed, 23 insertions(+), 87 deletions(-) delete mode 100644 .eslintrc.json delete mode 100644 packages/kyt-cli/.eslintrc.json delete mode 100644 packages/kyt-utils/.eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 64ab96a43..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "extends": [ - "airbnb" - ], - - "env": { - "jest": true, - "browser": true - }, - - "plugins": [ - "json" - ], - - "rules": { - "no-lonely-if": 2, - "no-nested-ternary": 2, - "max-nested-callbacks": [2, { "max": 5 }], - "constructor-super": 2, - "no-this-before-super": 2, - "prefer-spread": 2, - "no-warning-comments": [1, { "terms": ["todo", "fixme"], "location": "start" }], - "import/extensions": [1, { "js": "never" }], - "import/no-extraneous-dependencies": [0], - "no-param-reassign": 0 - }, - - "ignore": [ - "coverage" - ] -} diff --git a/package.json b/package.json index 07cdf28ab..2d4d3c8c0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "test": "jest --testPathPattern /__tests__/", "e2e": "jest --config ./e2e_tests/jest.config.json --verbose --no-cache", - "lint": "cd ./packages/kyt-cli && npm run lint && cd ../kyt-core && npm run lint && cd ../kyt-utils && npm run lint" + "lint": "eslint --config packages/kyt-core/.eslintrc.json --ignore-pattern **/node_modules --ignore-pattern packages/starter-kyts ./" }, "repository": { "type": "git", diff --git a/packages/kyt-cli/.eslintrc.json b/packages/kyt-cli/.eslintrc.json deleted file mode 100644 index b3ac55f66..000000000 --- a/packages/kyt-cli/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "../kyt-core/config/.eslintrc.base.json" - ] -} diff --git a/packages/kyt-cli/config/__tests__/kyt.user.config.test.js b/packages/kyt-cli/config/__tests__/kyt.user.config.test.js index 865af0974..7efcc1413 100644 --- a/packages/kyt-cli/config/__tests__/kyt.user.config.test.js +++ b/packages/kyt-cli/config/__tests__/kyt.user.config.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + const kytUserConfig = require('../user/kyt.config'); it('kyt.user.config exports an object', () => { diff --git a/packages/kyt-cli/package.json b/packages/kyt-cli/package.json index 55456fec1..b72eeda21 100644 --- a/packages/kyt-cli/package.json +++ b/packages/kyt-cli/package.json @@ -7,17 +7,10 @@ "kyt-cli": "index.js" }, "scripts": { - "test": "jest --testPathPattern /__tests__/", - "lint": "eslint ." + "test": "jest --testPathPattern /__tests__/" }, "license": "Apache-2.0", "devDependencies": { - "eslint": "3.8.1", - "eslint-config-airbnb": "12.0.0", - "eslint-plugin-import": "1.16.0", - "eslint-plugin-json": "1.2.0", - "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.4.1", "jest": "16.0.2" }, "dependencies": { diff --git a/packages/kyt-core/.eslintrc.json b/packages/kyt-core/.eslintrc.json index 58bc536d5..3c863c47e 100644 --- a/packages/kyt-core/.eslintrc.json +++ b/packages/kyt-core/.eslintrc.json @@ -1,32 +1,5 @@ { "extends": [ - "airbnb" - ], - - "env": { - "jest": true, - "browser": true - }, - - "plugins": [ - "json" - ], - - "rules": { - "no-lonely-if": 2, - "no-nested-ternary": 2, - "max-nested-callbacks": [2, { "max": 5 }], - "constructor-super": 2, - "no-this-before-super": 2, - "prefer-spread": 2, - "prefer-reflect": 2, - "no-warning-comments": [1, { "terms": ["todo", "fixme"], "location": "start" }], - "import/extensions": [1, { "js": "never" }], - "import/no-extraneous-dependencies": [0], - "no-param-reassign": 0 - }, - - "ignore": [ - "coverage" + "./config/.eslintrc.base.json" ] } diff --git a/packages/kyt-core/cli/__tests__/index.test.js b/packages/kyt-core/cli/__tests__/index.test.js index 7eca6f56d..6490c5501 100644 --- a/packages/kyt-core/cli/__tests__/index.test.js +++ b/packages/kyt-core/cli/__tests__/index.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + jest.mock('../commands', () => {}); it('bails when min node version is not met', () => { diff --git a/packages/kyt-core/cli/actions/__tests__/dev.test.js b/packages/kyt-core/cli/actions/__tests__/dev.test.js index 8d8c73028..ea075f0e8 100644 --- a/packages/kyt-core/cli/actions/__tests__/dev.test.js +++ b/packages/kyt-core/cli/actions/__tests__/dev.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + const assert = require('assert'); // jest.enableAutomock(); diff --git a/packages/kyt-core/cli/actions/__tests__/lint.test.js b/packages/kyt-core/cli/actions/__tests__/lint.test.js index 814198343..82a4cbd70 100644 --- a/packages/kyt-core/cli/actions/__tests__/lint.test.js +++ b/packages/kyt-core/cli/actions/__tests__/lint.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + jest.setMock('glob', { sync: jest.fn().mockReturnValueOnce(['filename']).mockReturnValue([]), }); diff --git a/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js b/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js index 5246bd944..6c6d8ccdc 100644 --- a/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js +++ b/packages/kyt-core/cli/actions/__tests__/lintStyle.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + jest.mock('kyt-utils/logger'); const stylelintMock = { diff --git a/packages/kyt-core/cli/actions/__tests__/proto.test.js b/packages/kyt-core/cli/actions/__tests__/proto.test.js index 759cb6f40..7a951f428 100644 --- a/packages/kyt-core/cli/actions/__tests__/proto.test.js +++ b/packages/kyt-core/cli/actions/__tests__/proto.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + jest.mock('../../../utils/ifPortIsFreeDo'); jest.mock('kyt-utils/paths'); jest.mock('kyt-utils/logger'); diff --git a/packages/kyt-core/package.json b/packages/kyt-core/package.json index f8f9e5021..488ccb8c1 100644 --- a/packages/kyt-core/package.json +++ b/packages/kyt-core/package.json @@ -10,7 +10,6 @@ "node": ">=6.1.0" }, "scripts": { - "lint": "eslint .", "test": "jest --testPathPattern /__tests__/", "e2e": "jest --config ./e2e_tests/jest.config.json --verbose --no-cache", "test-watch": "jest --watch", diff --git a/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js b/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js index b309fb167..f69041948 100644 --- a/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js +++ b/packages/kyt-core/utils/__tests__/ifPortIsFreeDo.test.js @@ -1,3 +1,4 @@ +/* eslint-disable global-require */ describe('ifPortIsFreeDo', () => { jest.mock('kyt-utils/logger'); diff --git a/packages/kyt-core/utils/__tests__/kytConfig.test.js b/packages/kyt-core/utils/__tests__/kytConfig.test.js index b292f347e..4cfa1a896 100644 --- a/packages/kyt-core/utils/__tests__/kytConfig.test.js +++ b/packages/kyt-core/utils/__tests__/kytConfig.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + jest.setMock('path', { join: () => 'joined-path', resolve: () => 'resolve', diff --git a/packages/kyt-core/utils/__tests__/printAssets.test.js b/packages/kyt-core/utils/__tests__/printAssets.test.js index e75dacc21..0e16548f9 100644 --- a/packages/kyt-core/utils/__tests__/printAssets.test.js +++ b/packages/kyt-core/utils/__tests__/printAssets.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + const assets = [{ name: 'main-1087ba4603e1150cbc80.js', size: 664552, chunks: [0], diff --git a/packages/kyt-core/utils/__tests__/webpackCompiler.test.js b/packages/kyt-core/utils/__tests__/webpackCompiler.test.js index 910971932..de0ef0e7a 100644 --- a/packages/kyt-core/utils/__tests__/webpackCompiler.test.js +++ b/packages/kyt-core/utils/__tests__/webpackCompiler.test.js @@ -1,3 +1,5 @@ +/* eslint-disable global-require */ + const plugin = jest.fn(); const webpackMock = jest.fn((obj) => { if (obj.error) throw new Error('test error'); diff --git a/packages/kyt-utils/.eslintrc.json b/packages/kyt-utils/.eslintrc.json deleted file mode 100644 index b3ac55f66..000000000 --- a/packages/kyt-utils/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "../kyt-core/config/.eslintrc.base.json" - ] -} diff --git a/packages/kyt-utils/package.json b/packages/kyt-utils/package.json index b36a2cddf..6e592ac25 100644 --- a/packages/kyt-utils/package.json +++ b/packages/kyt-utils/package.json @@ -4,16 +4,9 @@ "description": "A shared kyt utility library.", "main": "logger.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "lint": "eslint ." + "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { - "eslint": "3.8.1", - "eslint-config-airbnb": "12.0.0", - "eslint-plugin-import": "1.16.0", - "eslint-plugin-json": "1.2.0", - "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.4.1", "jest": "16.0.2" }, "author": "NYTimes", From 3e8f51cf647c200581415ba8993cbe97c2807287 Mon Sep 17 00:00:00 2001 From: delambo Date: Fri, 9 Dec 2016 16:01:36 -0500 Subject: [PATCH 31/31] eslint from kyt-core --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2d4d3c8c0..37b8e15ca 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "test": "jest --testPathPattern /__tests__/", "e2e": "jest --config ./e2e_tests/jest.config.json --verbose --no-cache", - "lint": "eslint --config packages/kyt-core/.eslintrc.json --ignore-pattern **/node_modules --ignore-pattern packages/starter-kyts ./" + "lint": "packages/kyt-core/node_modules/.bin/eslint --config packages/kyt-core/.eslintrc.json --ignore-pattern **/node_modules --ignore-pattern packages/starter-kyts ./" }, "repository": { "type": "git",