mirror of
https://github.com/status-im/sourcecred.git
synced 2025-01-10 12:46:16 +00:00
38f4121ce9
Summary: This CI script accomplishes two tasks: 1. It speeds up our build by parallelizing where possible. 2. It opens the possibility for running Travis cron jobs. Currently, this script by default does the same amount of work as our current CI script. However, I’d like to move `yarn backend` into the list of basic actions: a backend build failure should fail CI. Note: this script is written to be executable directly by Node, so we can’t use Flow types with the standard syntax. Instead, we use the comment syntax: https://flow.org/en/docs/types/comments/ Test Plan: The following should pass with useful output: - `npm run travis` - `GITHUB_TOKEN="your_github_token" npm run travis -- --full` The following should fail with useful output: - `npm run travis -- --full` (fail) To test different failure modes, it can be helpful to add ```js {id: "doomed", cmd: ["false"], deps: []}, {id: "orphan", cmd: ["whoami"], deps: ["who", "are", "you"]}, ``` to the list of `basicTasks` in `travis.js`. To test performance: ```shell $ time node ./config/travis.js >/dev/null 2>/dev/null real 0m8.306s user 0m20.336s sys 0m1.364s $ time bash -c \ > 'npm run check-pretty && npm run lint && npm run flow && CI=1 npm run test' \ > >/dev/null 2>/dev/null real 0m12.427s user 0m13.752s sys 0m0.804s ``` A 50% savings is not bad at all—and the raw time saved should only improve from here on, as the individual steps start taking more time. wchargin-branch: custom-ci
125 lines
3.4 KiB
JSON
125 lines
3.4 KiB
JSON
{
|
|
"name": "sourcecred-explorer",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"dependencies": {
|
|
"aphrodite": "^2.1.0",
|
|
"autoprefixer": "7.1.6",
|
|
"babel-core": "6.26.0",
|
|
"babel-eslint": "7.2.3",
|
|
"babel-jest": "20.0.3",
|
|
"babel-loader": "7.1.2",
|
|
"babel-preset-react-app": "^3.1.1",
|
|
"babel-runtime": "6.26.0",
|
|
"case-sensitive-paths-webpack-plugin": "2.1.1",
|
|
"chalk": "1.1.3",
|
|
"css-loader": "0.28.7",
|
|
"dotenv": "4.0.0",
|
|
"dotenv-expand": "4.0.1",
|
|
"eslint": "4.10.0",
|
|
"eslint-config-react-app": "^2.1.0",
|
|
"eslint-loader": "1.9.0",
|
|
"eslint-plugin-flowtype": "2.39.1",
|
|
"eslint-plugin-import": "2.8.0",
|
|
"eslint-plugin-jsx-a11y": "5.1.1",
|
|
"eslint-plugin-react": "7.4.0",
|
|
"extract-text-webpack-plugin": "3.0.2",
|
|
"file-loader": "1.1.5",
|
|
"flow-bin": "^0.65.0",
|
|
"fs-extra": "3.0.1",
|
|
"html-webpack-plugin": "2.29.0",
|
|
"husky": "^0.14.3",
|
|
"isomorphic-fetch": "^2.2.1",
|
|
"jest": "20.0.4",
|
|
"json-stable-stringify": "^1.0.1",
|
|
"lint-staged": "^6.1.1",
|
|
"lodash.clonedeep": "^4.5.0",
|
|
"lodash.isequal": "^4.5.0",
|
|
"lodash.sortby": "^4.7.0",
|
|
"object-assign": "4.1.1",
|
|
"postcss-flexbugs-fixes": "3.2.0",
|
|
"postcss-loader": "2.0.8",
|
|
"prettier": "^1.10.2",
|
|
"promise": "8.0.1",
|
|
"raf": "3.4.0",
|
|
"react": "^16.2.0",
|
|
"react-dev-utils": "^5.0.0",
|
|
"react-dom": "^16.2.0",
|
|
"style-loader": "0.19.0",
|
|
"sw-precache-webpack-plugin": "0.11.4",
|
|
"url-loader": "0.6.2",
|
|
"webpack": "3.8.1",
|
|
"webpack-dev-server": "2.9.4",
|
|
"webpack-manifest-plugin": "1.3.2",
|
|
"whatwg-fetch": "2.0.3"
|
|
},
|
|
"scripts": {
|
|
"precommit": "npm run lint-staged",
|
|
"lint-staged": "lint-staged",
|
|
"prettify": "prettier --write '**/*.js'",
|
|
"check-pretty": "prettier --list-different '**/*.js'",
|
|
"start": "node scripts/start.js",
|
|
"build": "node scripts/build.js",
|
|
"backend": "node scripts/backend.js",
|
|
"test": "node scripts/test.js --env=jsdom",
|
|
"ci-test": "CI=1 npm run test",
|
|
"flow": "flow",
|
|
"lint": "eslint src config --max-warnings 0",
|
|
"travis": "node ./config/travis.js"
|
|
},
|
|
"license": "MIT",
|
|
"lint-staged": {
|
|
"**/*.js": "prettier --list-different"
|
|
},
|
|
"jest": {
|
|
"collectCoverageFrom": [
|
|
"src/**/*.{js,jsx,mjs}"
|
|
],
|
|
"setupFiles": [
|
|
"<rootDir>/config/polyfills.js"
|
|
],
|
|
"testMatch": [
|
|
"<rootDir>/src/**/__tests__/**/*.{js,jsx,mjs}",
|
|
"<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
|
|
],
|
|
"testEnvironment": "node",
|
|
"testURL": "http://localhost",
|
|
"transform": {
|
|
"^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
|
|
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
|
|
"^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
|
|
},
|
|
"transformIgnorePatterns": [
|
|
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
|
|
],
|
|
"moduleNameMapper": {
|
|
"^react-native$": "react-native-web"
|
|
},
|
|
"moduleFileExtensions": [
|
|
"web.js",
|
|
"mjs",
|
|
"js",
|
|
"json",
|
|
"web.jsx",
|
|
"jsx",
|
|
"node"
|
|
]
|
|
},
|
|
"babel": {
|
|
"plugins": [
|
|
"flow-react-proptypes"
|
|
],
|
|
"presets": [
|
|
"react-app"
|
|
]
|
|
},
|
|
"devDependencies": {
|
|
"babel-plugin-flow-react-proptypes": "^18.0.0",
|
|
"enzyme": "^3.3.0",
|
|
"enzyme-adapter-react-16": "^1.1.1",
|
|
"enzyme-to-json": "^3.3.3",
|
|
"mkdirp": "^0.5.1",
|
|
"tmp": "^0.0.33"
|
|
}
|
|
}
|