Skip to content

Commit

Permalink
monorepo initial configuration with yarn
Browse files Browse the repository at this point in the history
  • Loading branch information
Roy Razon committed Jul 15, 2019
1 parent 6ab31d5 commit 339ac11
Show file tree
Hide file tree
Showing 55 changed files with 12,060 additions and 24,056 deletions.
13 changes: 4 additions & 9 deletions packages/salto/.circleci/config.yml → .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,24 @@ jobs:
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package-lock.json" }}
- v1-dependencies-{{ checksum "yarn.lock" }}

- run: npm install
- run: yarn

- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package-lock.json" }}
key: v1-dependencies-{{ checksum "yarn.lock" }}

- run:
name: Run Jest tests
command: npx jest --ci --runInBand --forceExit --verbose --detectOpenHandles --reporters=default --reporters=jest-junit
command: yarn run jest --ci --runInBand --forceExit --verbose --detectOpenHandles --reporters=default --reporters=jest-junit
environment:
JEST_JUNIT_OUTPUT: "reports/junit/js-test-results.xml"

- store_test_results:
path: reports

- store_artifacts:
path: reports

- run:
name: Upload coverage to codecov.io
command: npx codecov -f coverage/*.json


File renamed without changes.
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
node_modules

coverage
/reports

# Editors
.idea
*.iml

# OS metadata
.DS_Store
Thumbs.db

# test results
junit.xml

# yarn
yarn-error.log
2 changes: 2 additions & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
scripts-prepend-node-path=true

31 changes: 31 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# salto

[![CircleCI](https://circleci.com/gh/salto-io/salto_monorepo.svg?style=svg&circle-token=0ffb86a71822e8034430107475408c24d45e9eec)](https://circleci.com/gh/salto-io/salto_monorepo)     [![codecov](https://codecov.io/gh/salto-io/salto_monorepo/branch/master/graph/badge.svg?token=iZeoxV5WBR)](https://codecov.io/gh/salto-io/salto_monorepo)

---

### TODO high-level description of the project's goal

### Build instructions

#### Install yarn

```
brew install yarn
```

#### Run yarn install

```
yarn
```

### Run tests

```
yarn run jest
```

### Usage instructions

See READMEs of individual packages under the `packages` directory.
10 changes: 10 additions & 0 deletions build_utils/deep_merge.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
const _ = require('lodash')

const customizer = (objValue, srcValue) => {
if (_.isArray(srcValue) && _.isArray(objValue)) {
return objValue.concat(srcValue)
}
}

module.exports = (object, sources) => _.mergeWith(_.cloneDeep(object), sources, customizer)

File renamed without changes.
87 changes: 87 additions & 0 deletions eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
module.exports = {
env: {
es6: true,
jest: true,
node: true,
},

extends: [
'eslint:recommended',
'airbnb',
'plugin:@typescript-eslint/recommended',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:import/typescript',
'plugin:jest/recommended',
],

globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly',
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 2018,
sourceType: 'module',
useJSXTextNode: true,
project: './tsconfig.json',
tsconfigRootDir: './',
},
plugins: ['react', 'import', 'jest', '@typescript-eslint'],
rules: {
'linebreak-style': ['error', 'unix'],
quotes: [
'error',
'single',
{ avoidEscape: true, allowTemplateLiterals: false },
],
'react/jsx-filename-extension': [1, { extensions: ['.tsx', '.jsx'] }],
'lines-between-class-members': [1, 'always', {exceptAfterSingleLine: true}],
'@typescript-eslint/no-parameter-properties': [0],
'@typescript-eslint/explicit-function-return-type': [
'error', {
'allowTypedFunctionExpressions': true,
'allowExpressions': true,
}
],
'@typescript-eslint/explicit-member-accessibility': [0],
'jsx-a11y/anchor-is-valid': [0],
indent: ['error'],
'@typescript-eslint/indent': 'off',
semi: ['error', 'never'],
'no-param-reassign': [2, { 'props': false }],
'@typescript-eslint/no-unused-vars': [1, { argsIgnorePattern: '^_' }],
'no-constant-condition': ['error', { checkLoops: false }],
'generator-star-spacing': ["error", { "before": true, "after": false }],
'arrow-parens': ['error', 'as-needed'],
'comma-dangle': ['error', {
functions: 'ignore',
arrays: 'always-multiline',
objects: 'always-multiline',
imports: 'always-multiline',
exports: 'always-multiline',
}],
'implicit-arrow-linebreak': ['off'],
},
overrides: [
{
files: ['*.ts', '*.tsx'],
rules: {
'no-useless-constructor': [0],
'no-empty-function': [0],
'@typescript-eslint/array-type': [0],
'@typescript-eslint/member-delimiter-style': ['error', {multiline: {delimiter: 'none'}}]
}
},
],
settings: {
'import/resolver': {
node: {
paths: ['./'],
},
},
},
}
29 changes: 29 additions & 0 deletions jest.base.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module.exports = {
globals: {
'ts-jest': {
tsConfig: 'tsconfig.json',
},
},
moduleFileExtensions: ['js', 'ts'],
transform: {
'^.+\\.(ts|tsx)$': 'ts-jest',
},
transformIgnorePatterns: [
'[.]d[.]ts',
],
testEnvironment: 'node',
testPathIgnorePatterns: [
'<rootDir>/dist/'
],
preset: 'ts-jest',
collectCoverage: true,
coverageReporters: ['json', 'lcov', 'text', 'clover', 'json-summary'],
collectCoverageFrom: [
'**/*.[jt]s',
'**/*.[jt]sx',
'!**/*.d.ts',
'!**/node_modules/**',
'!*.config.js',
'!(test|dist|coverage)/**',
],
}
32 changes: 32 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const _ = require('lodash')
const fs = require('fs')
const path = require('path')

const packageConfigs = (() => {
const packagesDir = `${__dirname}/packages`
const packageDir = package => './' + path.relative(__dirname, `${packagesDir}/${package}`)
const packages = fs.readdirSync(packagesDir)

return Object.assign.apply(
{},
packages.map(package => ({
[package]: require(`${packageDir(package)}/jest.config.js`),
}))
)
})()

const collectCoverageFrom = _(packageConfigs)
.map(config => config.collectCoverageFrom || [])
.flatten().sort().uniq()
.orderBy(p => p.startsWith('!')) // "include" patterns first, then "exclude"
.value()

module.exports = Object.assign(
{},
require('./jest.base.config.js'),
{
projects: ['packages/*'],
coverageDirectory: "<rootDir>/coverage/",
collectCoverageFrom,
}
)
13 changes: 13 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"private": true,
"workspaces": [
"packages/*"
],
"name": "salto_monorepo",
"devDependencies": {
"codecov": "^3.5.0"
},
"scripts": {
"install": "yarn workspaces run build"
}
}
41 changes: 0 additions & 41 deletions packages/adapter-api/.circleci/config.yml

This file was deleted.

3 changes: 2 additions & 1 deletion packages/adapter-api/.eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
dist/*
/dist
*.d.ts
*.config.js
Loading

0 comments on commit 339ac11

Please sign in to comment.