diff --git a/.editorconfig b/.editorconfig index 9b73521..6c1914b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,3 +11,6 @@ trim_trailing_whitespace = true [*.md] max_line_length = off trim_trailing_whitespace = false + +[*.json] +indent_size = 2 diff --git a/.travis.yml b/.travis.yml index 45aafa6..c452a9b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,11 @@ notifications: node_js: - "10" - "8" -before_script: - - yarn global add @angular/cli script: - yarn commitlint-travis - - ng build core - - ng test core --watch false - - cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js + - yarn build + - yarn test:once + - cat ./coverage/core/lcov.info | ./node_modules/coveralls/bin/coveralls.js after_success: - yarn travis-deploy-once "yarn semantic-release" branches: diff --git a/package.json b/package.json index 012346a..3c1143b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,9 @@ "url": "https://github.com/klemenoslaj/ng-action-outlet.git" }, "scripts": { + "build": "yarn build:core", "build:core": "ng build core", + "test:once": "ng test core --watch false --browsers ChromiumHeadless --code-coverage", "docs:coverage": "compodoc -p ./tsconfig.docs.json --disableLifeCycleHooks --disableInternal --coverageMinimumPerFile 100", "docs:build.prod": "yarn docs:coverage && compodoc -p ./tsconfig.docs.json --disableLifeCycleHooks --disableInternal --disablePrivate --disableProtected --name NgActionOutlet --output docs", "docs:build.serve": "compodoc -p ./tsconfig.docs.json --disableLifeCycleHooks --disableInternal -s -w", @@ -58,6 +60,7 @@ "remark-cli": "^6.0.1", "remark-preset-lint-recommended": "^3.0.2", "semantic-release": "^15.10.5", + "shelljs": "^0.8.3", "ts-node": "~7.0.0", "tsickle": ">=0.29.0", "tslib": "^1.9.0", @@ -65,7 +68,13 @@ "typescript": "~3.2.0" }, "release": { - "pkgRoot": "dist/core" + "packages": "dist", + "plugins": [ + "./scripts/release.js", + "@semantic-release/github", + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator" + ] }, "config": { "commitizen": { diff --git a/projects/core/karma.conf.js b/projects/core/karma.conf.js index 550eb1e..46e0cb1 100644 --- a/projects/core/karma.conf.js +++ b/projects/core/karma.conf.js @@ -1,14 +1,6 @@ // Karma configuration file, see link for more information // https://karma-runner.github.io/1.0/config/configuration-file.html -let reports = ['html', 'lcovonly', 'text']; -let browsers = ['Chromium', 'ChromiumHeadless']; - -if (process.env.TRAVIS) { - reports = ['lcovonly']; - browsers = ['ChromiumHeadless']; -} - module.exports = function (config) { config.set({ basePath: '', @@ -24,8 +16,8 @@ module.exports = function (config) { clearContext: false // leave Jasmine Spec Runner output visible in browser }, coverageIstanbulReporter: { - dir: require('path').join(__dirname, '../../coverage'), - reports: reports, + dir: require('path').join(__dirname, '../../coverage/core'), + reports: ['html', 'lcovonly'], fixWebpackSourcePaths: true }, reporters: ['progress', 'kjhtml'], @@ -33,7 +25,8 @@ module.exports = function (config) { colors: true, logLevel: config.LOG_INFO, autoWatch: true, - browsers: browsers, - singleRun: false + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true }); }; diff --git a/scripts/release.js b/scripts/release.js new file mode 100644 index 0000000..84b7f54 --- /dev/null +++ b/scripts/release.js @@ -0,0 +1,29 @@ +const dirname = require('path').dirname; +const shell = require('shelljs'); + +async function prepare({ packages }, context) { + const PLACEHOLDER_VERSION = '0.0.0-development'; + const { nextRelease: { version }, logger } = context; + + shell + .ls(`${packages}/*/package.json`) + .forEach(file => { + shell.sed('-i', PLACEHOLDER_VERSION, version, file); + shell.exec(`npm version ${version} --no-git-tag-version`, { cwd: dirname(file) }); + logger.log(`Write version ${version} to package.json in ${file}`); + }); +} + +async function publish({ packages }, context) { + const { logger } = context; + + shell + .ls(`${packages}/*/package.json`) + .map(file => ({ pkgPath: dirname(file), package: JSON.parse(file) })) + .forEach(({ pkgPath: packagePath, package }) => { + shell.exec(`npm publish ${packagePath}`, { cwd: packagePath }); + logger.log(`Published ${package.name}@${package.version}.`); + }); +} + +module.exports = { prepare, publish };