diff --git a/.gitignore b/.gitignore index f715b2ad..df324433 100644 --- a/.gitignore +++ b/.gitignore @@ -14,9 +14,6 @@ e2e/**/*.js.map e2e/**/*.d.ts !e2e/**/global.d.ts !e2e/protractor*.js -demo-apps/ts-webpack/src/**/*.js -demo-apps/ts-webpack/src/**/*.js.map -demo-apps/ts-webpack/src/**/*.d.ts !demo-apps/es5/index.js !demo-apps/es6-systemjs/index.js test/**/*.d.ts @@ -24,7 +21,6 @@ test/**/*.js.map test/**/*.js !test/index.js !test/index.d.ts -# redundant webpack build artifacts produced by ExtractTextPlugin bundles build build-stats.json diff --git a/.npmignore b/.npmignore index 70440fa6..78d65db1 100644 --- a/.npmignore +++ b/.npmignore @@ -1,6 +1,7 @@ .vscode/ .idea/ .temp/ +# redundant webpack build artifacts produced by ExtractTextPlugin bundles/styles.* demo-apps/ demo-site/ diff --git a/.travis.yml b/.travis.yml index 99da0484..9a3a6cb3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,32 +1,35 @@ +sudo: false language: node_js node_js: - node - +cache: + directories: + - node_modules +notifications: + email: false addons: sauce_connect: true - env: global: - secure: gnwapHmalQ00mis28sRZQwmrkOWU7CyIyU3iKc1bixgGKZu6dhMUwQt2WA8HDkOLgSxSCSMigtzwuPvkxH6CRLbMnYwCDkCHZS9SvjrOLX+jZkORbSKRJUjlkRS3cjkY9AzKOYAOngAN07j0iqvsKx6UtdtEvA4QVM/ToQzVfi0= - secure: J9OuScEujGDV/JKBvOz7pgh/hzA6QEqJKo8wtQprsSuUnP1zdUvlRV+oKuGXAGnfsFlr/aw+7+djz4QbqITQeQDJaQ4Ui4/M8dfDp4kLKGH6U8obrnX79IERjgKZubs17dW+NcbIt6pNzJavOdLlvAZiQtQMcdXbHI+Xa0PoTHs= -before_install: -- npm install -g karma-cli - install: - npm prune && npm install -- npm run setup:demo-apps +- npm run setup:ci before_script: -- npm run build:all +- npm run build:demo-apps - '[ "${TRAVIS_PULL_REQUEST}" = "true" ] || npm run e2e-server:ci' script: - npm test - '[ "${TRAVIS_PULL_REQUEST}" = "true" ] || npm run e2e:ci' -after_success: cat out/coverage/*/lcov.info | ./node_modules/coveralls/bin/coveralls.js +after_success: +- cat out/coverage/*/lcov.info | ./node_modules/coveralls/bin/coveralls.js +- npm run semantic-release -cache: - directories: - - node_modules \ No newline at end of file +branches: + except: + - "/^v\\d+\\.\\d+\\.\\d+$/" \ No newline at end of file diff --git a/circle.yml b/circle.yml index d2ad37f9..896df730 100644 --- a/circle.yml +++ b/circle.yml @@ -4,9 +4,8 @@ machine: dependencies: pre: - - npm install -g karma-cli - npm prune && npm install - - npm run build + - npm run setup:ci && npm run build:demo-apps cache_directories: - node_modules diff --git a/demo-apps/es5/npm-shrinkwrap.json b/demo-apps/es5/npm-shrinkwrap.json deleted file mode 100644 index 5d315ad6..00000000 --- a/demo-apps/es5/npm-shrinkwrap.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "ng-table-demo-app-es5", - "version": "1.0.0", - "dependencies": { - "@types/angular": { - "version": "1.5.16", - "from": "@types/angular@>=1.5.13 <2.0.0", - "resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.5.16.tgz" - }, - "@types/jquery": { - "version": "2.0.32", - "from": "@types/jquery@*", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.32.tgz" - }, - "angular": { - "version": "1.5.8", - "from": "angular@1.5.8", - "resolved": "https://registry.npmjs.org/angular/-/angular-1.5.8.tgz" - }, - "bootstrap": { - "version": "3.3.7", - "from": "bootstrap@3.3.7", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz" - }, - "ng-table": { - "version": "2.0.0", - "from": "..\\..", - "resolved": "file:..\\.." - } - } -} diff --git a/demo-apps/es5/package.json b/demo-apps/es5/package.json index 285d93aa..4265df3b 100644 --- a/demo-apps/es5/package.json +++ b/demo-apps/es5/package.json @@ -7,16 +7,14 @@ "private": true, "scripts": { "_linklocal": "node ../../node_modules/linklocal/bin/linklocal.js", - "build:lib": "cd ../../ && npm run build", "build": "echo \"Nothing to build\"", "clean": "echo \"Nothing to clean\"", + "postinstall": "npm run linklocal", "preinstall-dep": "npm run unlinklocal", "install-dep": "npm install", "postinstall-dep": "npm run linklocal", "linklocal": "npm run _linklocal && npm prune", - "server": "node ../../node_modules/http-server/bin/http-server -c-1 -o", - "setup:local": "node ../../node_modules/npm-run-all/bin/npm-run-all --parallel build:lib linklocal", - "start": "npm run server", + "start": "node ../../node_modules/http-server/bin/http-server -c-1 -o", "unlinklocal": "npm run _linklocal -- unlink && npm i", "preuninstall-dep": "npm run unlinklocal", "uninstall-dep": "npm uninstall", @@ -24,8 +22,8 @@ }, "keywords": [], "dependencies": { - "angular": "1.5.8", - "bootstrap": "3.3.7", + "angular": "file:../../node_modules/angular", + "bootstrap": "file:../../node_modules/bootstrap", "ng-table": "file:../../" } } diff --git a/demo-apps/es6-systemjs/package.json b/demo-apps/es6-systemjs/package.json index 760e9c9b..3b3c3bd1 100644 --- a/demo-apps/es6-systemjs/package.json +++ b/demo-apps/es6-systemjs/package.json @@ -7,16 +7,14 @@ "private": true, "scripts": { "_linklocal": "node ../../node_modules/linklocal/bin/linklocal.js", - "build:lib": "cd ../../ && npm run build", "build": "echo \"Nothing to build\"", "clean": "echo \"Nothing to clean\"", + "postinstall": "npm run linklocal", "preinstall-dep": "npm run unlinklocal", "install-dep": "npm install", "postinstall-dep": "npm run linklocal", "linklocal": "npm run _linklocal && npm prune", - "server": "node ../../node_modules/http-server/bin/http-server -c-1 -o", - "setup:local": "node ../../node_modules/npm-run-all/bin/npm-run-all --parallel build:lib linklocal", - "start": "npm run server", + "start": "node ../../node_modules/http-server/bin/http-server -c-1 -o", "unlinklocal": "npm run _linklocal -- unlink && npm i", "preuninstall-dep": "npm run unlinklocal", "uninstall-dep": "npm uninstall", diff --git a/demo-apps/es6-webpack/package.json b/demo-apps/es6-webpack/package.json index 9afd7cd1..cff2761d 100644 --- a/demo-apps/es6-webpack/package.json +++ b/demo-apps/es6-webpack/package.json @@ -7,18 +7,17 @@ "private": true, "scripts": { "_linklocal": "node ../../node_modules/linklocal/bin/linklocal.js", - "build:lib": "cd ../../ && npm run tsc", "prebuild": "npm run clean", "build": "node ../../node_modules/webpack/bin/webpack.js --env.debug", "prebuild:prod": "npm run clean", "build:prod": "node ../../node_modules/webpack/bin/webpack.js --env.prod", "clean": "node ../../node_modules/shx/lib/cli.js rm -rf build build-stats.json", + "postinstall": "npm run linklocal", "preinstall-dep": "npm run unlinklocal", "install-dep": "npm install", "postinstall-dep": "npm run linklocal", "linklocal": "npm run _linklocal && npm prune", - "setup:local": "node ../../node_modules/npm-run-all/bin/npm-run-all --parallel build:lib linklocal", - "server": "node ../../node_modules/http-server/bin/http-server build -c-1 -o", + "serve": "node ../../node_modules/http-server/bin/http-server build -c-1 -o", "start": "node ../../node_modules/webpack-dev-server/bin/webpack-dev-server.js --env.debug", "stats": "node ../../node_modules/webpack/bin/webpack.js --env.prod --profile --json > build-stats.json", "unlinklocal": "npm run _linklocal -- unlink && npm i", @@ -33,4 +32,4 @@ "bootstrap-css-only": "file:../../node_modules/bootstrap-css-only", "ng-table": "file:../../" } -} \ No newline at end of file +} diff --git a/demo-apps/es6-webpack/webpack.config.js b/demo-apps/es6-webpack/webpack.config.js index 52a730e1..df2d97e5 100644 --- a/demo-apps/es6-webpack/webpack.config.js +++ b/demo-apps/es6-webpack/webpack.config.js @@ -25,8 +25,6 @@ module.exports = (env = { prod: false, debug: false, port: 8080, host: 'localhos parts.inlineHtmlTemplates(), parts.inlineNgTableHtmlTemplates(), parts.useHtmlPlugin(), - parts.forEnvironment(), - // this is only required because we using symlinks - parts.resolveLibraryPeerDependencies() + parts.forEnvironment() ); } \ No newline at end of file diff --git a/demo-apps/ts-webpack/.gitignore b/demo-apps/ts-webpack/.gitignore new file mode 100644 index 00000000..866857c5 --- /dev/null +++ b/demo-apps/ts-webpack/.gitignore @@ -0,0 +1,4 @@ +src/**/*.js +src/**/*.js.map +src/**/*.d.ts +!src/global.d.ts \ No newline at end of file diff --git a/demo-apps/ts-webpack/package.json b/demo-apps/ts-webpack/package.json index acb07e2a..b4ab0aa3 100644 --- a/demo-apps/ts-webpack/package.json +++ b/demo-apps/ts-webpack/package.json @@ -7,21 +7,19 @@ "private": true, "scripts": { "_linklocal": "node ../../node_modules/linklocal/bin/linklocal.js", - "build:lib": "cd ../../ && npm run tsc", "prebuild": "npm run clean", "build": "node ../../node_modules/webpack/bin/webpack.js --env.debug", "prebuild:prod": "npm run clean", "build:prod": "node ../../node_modules/webpack/bin/webpack.js --progress --env.prod", - "clean": "node ../../node_modules/shx/lib/cli.js rm -rf build build-stats.json", + "clean": "node ../../node_modules/shx/lib/cli.js rm -rf build build-stats.json src/**/*.js src/**/*.js.map", + "postinstall": "npm run linklocal", "preinstall-dep": "npm run unlinklocal", "install-dep": "npm install", "postinstall-dep": "npm run linklocal", "linklocal": "npm run _linklocal && npm prune", - "setup:local": "node ../../node_modules/npm-run-all/bin/npm-run-all --parallel build:lib linklocal", - "server": "node ../../node_modules/http-server/bin/http-server build -c-1 -o", + "serve": "node ../../node_modules/http-server/bin/http-server build -c-1 -o", "start": "node ../../node_modules/webpack-dev-server/bin/webpack-dev-server.js --progress --env.debug", "stats": "node ../../node_modules/webpack/bin/webpack.js --env.prod --profile --json > build-stats.json", - "tsc": "node ../../node_modules/typescript/lib/typescript.js", "unlinklocal": "npm run _linklocal -- unlink && npm i", "preuninstall-dep": "npm run unlinklocal", "uninstall-dep": "npm uninstall", @@ -34,4 +32,4 @@ "bootstrap-css-only": "file:../../node_modules/bootstrap-css-only", "ng-table": "file:../.." } -} \ No newline at end of file +} diff --git a/demo-apps/ts-webpack/src/global.d.ts b/demo-apps/ts-webpack/src/global.d.ts new file mode 100644 index 00000000..cc2be117 --- /dev/null +++ b/demo-apps/ts-webpack/src/global.d.ts @@ -0,0 +1,7 @@ +// fake the nodejs require function so that we can add 'require' calls for html files; +// these calls to 'require' will then be converted by webpack ngtemplate-loader +// note that I would have prefered to use standard es2015 import for these +// html files but that would have meant using typescript 2 feature of implicit +// ambient modules which in turn would have meant turning off noImplicitAny checks +// which is a VERY bad idea +declare function require(path: string): any; \ No newline at end of file diff --git a/demo-apps/ts-webpack/tsconfig.json b/demo-apps/ts-webpack/tsconfig.json index ae05eb8b..ff49eb05 100644 --- a/demo-apps/ts-webpack/tsconfig.json +++ b/demo-apps/ts-webpack/tsconfig.json @@ -10,10 +10,7 @@ "removeComments": false, "noImplicitAny": true, "noImplicitReturns": true, - "suppressImplicitAnyIndexErrors": true, - "typeRoots": [ - "../../node_modules/@types" - ] + "suppressImplicitAnyIndexErrors": true }, "exclude": ["node_modules"], "awesomeTypescriptLoaderOptions": { diff --git a/demo-apps/ts-webpack/webpack.config.js b/demo-apps/ts-webpack/webpack.config.js index c0f86c5c..98ada3e5 100644 --- a/demo-apps/ts-webpack/webpack.config.js +++ b/demo-apps/ts-webpack/webpack.config.js @@ -25,8 +25,6 @@ module.exports = (env = { prod: false, debug: false, port: 8080, host: 'localhos parts.inlineHtmlTemplates(), parts.inlineNgTableHtmlTemplates(), parts.useHtmlPlugin(), - parts.forEnvironment(), - // this is only required because we using symlinks - parts.resolveLibraryPeerDependencies() + parts.forEnvironment() ); } \ No newline at end of file diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 04d55fc5..124bf1db 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "ng-table", - "version": "2.0.0", + "version": "0.0.0-semantic-release", "dependencies": { "@types/angular": { "version": "1.5.14", diff --git a/package.json b/package.json index 9f500932..7d0825bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ng-table", - "version": "2.0.0", + "version": "0.0.0-semantic-release", "author": "Vitalii Savchuk ", "license": "BSD", "repository": { @@ -10,6 +10,15 @@ "main": "bundles/ng-table.js", "module": "index.js", "typings": "index.d.ts", + "release": { + "branch": "typescript", + "fallbackTags": { + "next": "latest" + } + }, + "publishConfig": { + "tag": "next" + }, "devDependencies": { "@types/angular-mocks": "^1.5.4", "@types/jasmine": "^2.2.33", @@ -57,6 +66,7 @@ "protractor-jasmine2-screenshot-reporter": "^0.3.2", "resolve-url-loader": "^1.6.0", "sass-loader": "^4.0.0", + "semantic-release": "^4.3.5", "shx": "^0.1.4", "style-loader": "^0.13.1", "systemjs": "^0.19.36", @@ -71,7 +81,7 @@ "webpack-validator": "^2.2.7" }, "scripts": { - "build:all": "npm-run-all --parallel build tsc --serial build:demo-apps", + "build:all": "npm-run-all --parallel build:full tsc --serial build:demo-apps", "build:demo-apps": "shx ls -d demo-apps/*/ | bulk -c \"npm run build\"", "build": "webpack --progress --profile --env.debug", "build:prod": "webpack --progress --profile --env.prod", @@ -87,9 +97,12 @@ "e2e": "protractor e2e/protractor.config.js", "e2e:ci": "protractor e2e/protractor-travis.config", "poste2e": "node ./scripts/open-e2e-report", - "presetup:demo-apps": "shx ls -d demo-apps/*/ | bulk -c \"npm install\"", - "setup:demo-apps": "shx ls -d demo-apps/*/ | bulk -c \"npm run linklocal\"", - "setup": "npm-run-all --parallel setup:demo-apps update-webdriver", + "install:demo-apps": "shx ls -d demo-apps/*/ | bulk -c \"npm install\"", + "link:demo-apps": "shx ls -d demo-apps/*/ | bulk -c \"npm run linklocal\"", + "semantic-release": "semantic-release pre && npm publish && semantic-release post", + "_setup:common": "npm-run-all --parallel build tsc --serial install:demo-apps", + "setup:ci": "npm run _setup:common", + "setup": "npm-run-all --parallel _setup:common update-webdriver", "shrinkwrap:demo-apps": "shx ls -d demo-apps/*/ | bulk -c \"npm shrinkwrap --dev\"", "test": "karma start --single-run --no-auto-watch", "test:debug": "karma start --no-single-run --no-auto-watch", diff --git a/scripts/webpack/appParts.js b/scripts/webpack/appParts.js index b56aad7d..434dfa4d 100644 --- a/scripts/webpack/appParts.js +++ b/scripts/webpack/appParts.js @@ -23,7 +23,6 @@ function createAppParts(rootDir, env = {}) { inlineHtmlTemplates, inlineNgTableHtmlTemplates, isDevServer, - resolveLibraryPeerDependencies, sass, useHtmlPlugin }); @@ -197,23 +196,6 @@ function createAppParts(rootDir, env = {}) { }; } - - /** - * override the webpack resolution logic but only for peer dependencies defined by ng-table. - * This is necessary because the standard resolve breaks down when using symlinks - */ - function resolveLibraryPeerDependencies() { - const ngTablePkgPath = path.join(rootDir, 'node_modules', 'ng-table', 'package'); - const ngTablePkg = require(ngTablePkgPath); - const alias = Object.keys(ngTablePkg.peerDependencies).reduce((acc, name) => { - acc[name] = path.join(rootDir, 'node_modules', name); - return acc; - }, {}); - return { - resolve: { alias } - }; - } - function sass(excludeFiles) { excludeFiles = excludeFiles || []; // note: would like to use sourcemaps in a deployed website (ie outside of dev-server)