diff --git a/gulpfile.js b/gulpfile.js index 998cd427f1de..5572bf69fb58 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -7,19 +7,10 @@ const path = require('path'); const tsconfigPath = path.join(__dirname, 'tools/gulp/tsconfig.json'); -const tsconfig = require(tsconfigPath); // Register TS compilation. require('ts-node').register({ project: tsconfigPath }); -// The gulp tsconfig file maps specific imports to relative paths. In combination with ts-node -// this doesn't work because the JavaScript output will still refer to the imports instead of -// to the relative path. Tsconfig-paths can be used to support path mapping inside of Node. -require("tsconfig-paths").register({ - baseUrl: path.dirname(tsconfigPath), - paths: tsconfig.compilerOptions.paths -}); - require('./tools/gulp/gulpfile'); diff --git a/package-lock.json b/package-lock.json index 3d68ddc5977d..5e606c07a187 100644 --- a/package-lock.json +++ b/package-lock.json @@ -212,12 +212,6 @@ "integrity": "sha1-ZZC1zm53lVbJzHBDvWRJ1rwHgd4=", "dev": true }, - "@types/chalk": { - "version": "0.4.31", - "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz", - "integrity": "sha1-ox10JBprHtu5c8822XooloNKUfk=", - "dev": true - }, "@types/fs-extra": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-3.0.3.tgz", @@ -231,9 +225,9 @@ "dev": true }, "@types/gulp": { - "version": "3.8.32", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-3.8.32.tgz", - "integrity": "sha1-g8WcaBzCM9Hsf4LSaVVVZvoTMVY=", + "version": "3.8.33", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-3.8.33.tgz", + "integrity": "sha512-3UpA2pkKO40cNPe/8bxMQFWSASR9Jx67JfN9Z2Cf6ogfDMwXgEHm2XjKmuLYEtrp1IHYApOWlYMLYNgtTJgSAw==", "dev": true }, "@types/hammerjs": { @@ -873,20 +867,6 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", @@ -935,12 +915,6 @@ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", "dev": true }, - "bufferstreams": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bufferstreams/-/bufferstreams-1.1.1.tgz", - "integrity": "sha1-AWE3MGCsWYjv+ZBYcxEU9uGV1R4=", - "dev": true - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1062,12 +1036,6 @@ "integrity": "sha1-qS2ceG5b+bkwgGMp7gXV0yYbSvo=", "dev": true }, - "clean-css": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.5.tgz", - "integrity": "sha1-0JqHoCpTdRF1iXlq52oGPKzbVBo=", - "dev": true - }, "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", @@ -2395,12 +2363,6 @@ "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", "dev": true }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", @@ -5704,12 +5666,6 @@ } } }, - "gulp-clean-css": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-3.5.0.tgz", - "integrity": "sha1-1D50fEGVeZXsSbuWEvhitkMp8bA=", - "dev": true - }, "gulp-cli": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-1.3.0.tgz", @@ -6004,20 +5960,6 @@ "integrity": "sha1-jP1kIJ5TysUs17j2qLXZ6nl5UXI=", "dev": true }, - "gulp-htmlmin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-htmlmin/-/gulp-htmlmin-3.0.0.tgz", - "integrity": "sha1-GeqAAtEjHWsfGKEtIPKmand3D7M=", - "dev": true, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } - } - }, "gulp-if": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-2.0.2.tgz", @@ -6042,12 +5984,6 @@ "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", "dev": true }, - "gulp-sass": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-3.1.0.tgz", - "integrity": "sha1-U9xLaKH13f5EJKtMJHZVJpqLdLc=", - "dev": true - }, "gulp-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/gulp-transform/-/gulp-transform-2.0.0.tgz", @@ -6206,12 +6142,6 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, "header-case": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", @@ -6254,20 +6184,6 @@ "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", "dev": true }, - "html-minifier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.2.tgz", - "integrity": "sha1-1zvD/0SJQkCIGM5gm/P7DqfvTrc=", - "dev": true, - "dependencies": { - "uglify-js": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.22.tgz", - "integrity": "sha512-VEC+Qdr615ZEbmf8xV+F9gKpX8mEJpB+lnYgNBkIgRkogz8eGzzZM1TbrS+FOqIvISdOrnQICQIBzt/fMlwUEQ==", - "dev": true - } - } - }, "html-tags": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", @@ -6530,12 +6446,6 @@ "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", "dev": true }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, "is-my-json-valid": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", @@ -7628,12 +7538,6 @@ } } }, - "magic-string": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.21.3.tgz", - "integrity": "sha1-h+IBAJ6/3m9G3FdXMFpwr3HjFiQ=", - "dev": true - }, "make-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", @@ -7781,9 +7685,9 @@ "dev": true }, "merge2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.0.3.tgz", - "integrity": "sha1-+kT4siYmFaty8ICKQB1HinDjlNs=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.1.0.tgz", + "integrity": "sha1-mfsys16frYQBRgBOE6VrdUmlJNs=", "dev": true }, "methmeth": { @@ -8068,12 +7972,6 @@ "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", "dev": true }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true - }, "ncp": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", @@ -9212,12 +9110,6 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, "remove-trailing-separator": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", @@ -9433,18 +9325,6 @@ "integrity": "sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w=", "dev": true }, - "rollup": { - "version": "0.41.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.6.tgz", - "integrity": "sha1-4NBUl4d6OYwQTYFtJzOnGKepTio=", - "dev": true - }, - "rollup-plugin-node-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", - "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", - "dev": true - }, "router": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/router/-/router-1.3.1.tgz", @@ -9500,12 +9380,6 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, - "sander": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", - "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", - "dev": true - }, "sass-graph": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", @@ -9994,12 +9868,6 @@ } } }, - "sorcery": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", - "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", - "dev": true - }, "source-map": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", @@ -10012,12 +9880,6 @@ "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", "dev": true }, - "sourcemap-codec": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.3.1.tgz", - "integrity": "sha1-mtb5vb1pGTEBbjCTnbyGhnMyMUY=", - "dev": true - }, "sparkles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", @@ -10727,12 +10589,6 @@ "integrity": "sha1-NEiaLKwMCcHMEO2RugEVlNQzO+I=", "dev": true }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, "ts-node": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.1.0.tgz", @@ -10845,7 +10701,8 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true + "dev": true, + "optional": true }, "uglify-to-browserify": { "version": "1.0.2", @@ -11250,12 +11107,6 @@ "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", "dev": true }, - "vlq": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz", - "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=", - "dev": true - }, "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -11540,12 +11391,6 @@ "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=", "dev": true }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true - }, "xml-name-validator": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", diff --git a/package.json b/package.json index 2a82390a6ee0..c268d6e30e22 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "deploy": "gulp deploy:devapp", "webdriver-manager": "webdriver-manager", "docs": "gulp docs", - "api": "gulp api-docs" + "api": "gulp api-docs", + "postinstall": "npm install ./tools/package-tools/" }, "version": "2.0.0-beta.7", "license": "MIT", @@ -45,10 +46,9 @@ "@angular/router": "~4.1.0", "@angular/tsc-wrapped": "~4.1.0", "@google-cloud/storage": "^1.1.1", - "@types/chalk": "^0.4.31", "@types/fs-extra": "^3.0.1", "@types/glob": "^5.0.30", - "@types/gulp": "3.8.32", + "@types/gulp": "^3.8.33", "@types/hammerjs": "^2.0.34", "@types/jasmine": "2.5.45", "@types/merge2": "^0.3.30", @@ -58,7 +58,6 @@ "autoprefixer": "^6.7.6", "axe-core": "^2.2.1", "axe-webdriverjs": "^1.1.1", - "chalk": "^1.1.3", "conventional-changelog": "^1.1.3", "dgeni": "^0.4.7", "dgeni-packages": "^0.19.1", @@ -70,17 +69,14 @@ "google-closure-compiler": "^20170218.0.0", "gulp": "^3.9.1", "gulp-clean": "^0.3.2", - "gulp-clean-css": "^3.3.1", "gulp-cli": "^1.3.0", "gulp-connect": "^5.0.0", "gulp-dom": "^0.9.17", "gulp-flatten": "^0.3.1", "gulp-highlight-files": "^0.0.4", - "gulp-htmlmin": "^3.0.0", "gulp-if": "^2.0.2", "gulp-markdown": "^1.2.0", "gulp-rename": "^1.2.2", - "gulp-sass": "^3.1.0", "gulp-transform": "^2.0.0", "hammerjs": "^2.0.8", "highlight.js": "^9.11.0", @@ -97,25 +93,20 @@ "karma-sauce-launcher": "^1.1.0", "karma-sourcemap-loader": "^0.3.7", "madge": "^1.6.0", - "magic-string": "^0.21.3", "merge2": "^1.0.3", "minimist": "^1.2.0", "node-sass": "^4.5.3", "protractor": "^5.1.2", "request": "^2.81.0", "resolve-bin": "^0.4.0", - "rollup": "^0.41.6", - "rollup-plugin-node-resolve": "^3.0.0", "run-sequence": "^1.2.2", "scss-bundle": "^2.0.1-beta.7", "selenium-webdriver": "^3.4.0", - "sorcery": "^0.10.0", "stylelint": "^7.10.1", "ts-node": "^3.0.4", "tsconfig-paths": "^2.2.0", "tslint": "^5.2.0", "typescript": "~2.2.1", - "uglify-js": "^2.8.14", "web-animations-js": "^2.2.5" } } diff --git a/scripts/ci/publish-artifacts.sh b/scripts/ci/publish-artifacts.sh index cc7d49fd0cd5..8edfe7b47154 100755 --- a/scripts/ci/publish-artifacts.sh +++ b/scripts/ci/publish-artifacts.sh @@ -28,6 +28,9 @@ $(npm bin)/gulp docs ./scripts/deploy/publish-build-artifacts.sh --no-build & ./scripts/deploy/publish-docs-content.sh --no-build & +# Publish the build tools of Angular Material on GitHub. +./scripts/deploy/publish-build-tools.sh & + # Deploy the screenshot and dashboard functions for each push build. ./scripts/deploy/deploy-screenshot-functions.sh & ./scripts/deploy/deploy-dashboard.sh & diff --git a/scripts/deploy/publish-build-tools.sh b/scripts/deploy/publish-build-tools.sh new file mode 100755 index 000000000000..bd7631c22b7a --- /dev/null +++ b/scripts/deploy/publish-build-tools.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Script that publishes the build and package tools of Angular Material to a Github repository. +# This allows other Angular projects like Flex-Layout to use the same packaging as in Material. + +# The script should immediately exit if any command in the script fails. +set -e + +# Go to the root of the project. +cd $(dirname ${0})/../.. + +if [ -z ${MATERIAL2_BUILDS_TOKEN} ]; then + echo "Error: No access token for GitHub could be found." \ + "Please set the environment variable 'MATERIAL2_BUILDS_TOKEN'." + exit 1 +fi + +packageToolsPath="./tools/package-tools/" +packageToolsOutput="./dist/package-tools/" + +buildVersion=$(node -pe "require('./package.json').version") + +commitSha=$(git rev-parse --short HEAD) +commitAuthorName=$(git --no-pager show -s --format='%an' HEAD) +commitAuthorEmail=$(git --no-pager show -s --format='%ae' HEAD) +commitMessage=$(git log --oneline -n 1) + +repoName="material2-build-tools" +repoUrl="https://github.com/angular/${repoName}.git" +repoDir="tmp/${repoName}" + +# Build the package tools output. +$(npm bin)/tsc -p ${packageToolsPath} + +# Copy the package.json and the license file to the output directory. +cp ${packageToolsPath}/package.json ${packageToolsOutput} +cp LICENSE ${packageToolsOutput} + +# Prepare cloning the builds repository +rm -rf ${repoDir} +mkdir -p ${repoDir} + +# Clone the repository and only fetch the last commit to download less unused data. +git clone ${repoUrl} ${repoDir} --depth 1 + +# Delete old files and copy the build files to the repository +rm -rf ${repoDir}/* +cp -r ${packageToolsOutput}/* ${repoDir} + +# Create the build commit and push the changes to the repository. +cd ${repoDir} + +# Replace all placeholders with a unique version that can be used to install the build-tools +# from Github. +sed -i "s/0.0.0-PLACEHOLDER/${buildVersion}-${commitSha}/g" package.json + +# Prepare Git for pushing the artifacts to the repository. +git config user.name "${commitAuthorName}" +git config user.email "${commitAuthorEmail}" +git config credential.helper "store --file=.git/credentials" + +echo "https://${MATERIAL2_BUILDS_TOKEN}:@github.com" > .git/credentials + +git add -A +git commit -m "${commitMessage}" +git tag "${buildVersion}-${commitSha}" +git push origin master --tags + +echo "Published the build tools for SHA ${commitSha} on Github." diff --git a/tools/gulp/tsconfig.json b/tools/gulp/tsconfig.json index c74891af5eaf..270633fdd14e 100644 --- a/tools/gulp/tsconfig.json +++ b/tools/gulp/tsconfig.json @@ -12,11 +12,7 @@ "target": "es5", "types": [ "node" - ], - "baseUrl": ".", - "paths": { - "material2-build-tools": ["../package-tools/index"] - } + ] }, "files": [ "gulpfile.ts" diff --git a/tools/package-tools/package.json b/tools/package-tools/package.json new file mode 100644 index 000000000000..d4e8226467db --- /dev/null +++ b/tools/package-tools/package.json @@ -0,0 +1,32 @@ +{ + "name": "material2-build-tools", + "description": "Build tools for Angular Material", + "version": "0.0.0-PLACEHOLDER", + "license": "MIT", + "main": "index.js", + "dependencies": { + "@types/chalk": "^0.4.31", + "@types/fs-extra": "^3.0.3", + "@types/glob": "^5.0.30", + "@types/gulp": "^3.8.33", + "@types/node": "^7.0.29", + "chalk": "^2.0.1", + "fs-extra": "^3.0.1", + "gulp-clean-css": "^3.5.0", + "gulp-connect": "^5.0.0", + "gulp-htmlmin": "^3.0.0", + "gulp-if": "^2.0.2", + "gulp-sass": "^3.1.0", + "magic-string": "^0.21.3", + "rollup": "^0.43.0", + "rollup-plugin-node-resolve": "^3.0.0", + "run-sequence": "^2.0.0", + "sorcery": "^0.10.0", + "uglify-js": "^2.8.29" + }, + "peerDependencies": { + "@angular/tsc-wrapped": "~4.1.0", + "gulp": "^3.9.1", + "typescript": "~2.2.1" + } +} diff --git a/tools/package-tools/tsconfig.json b/tools/package-tools/tsconfig.json new file mode 100644 index 000000000000..a711afb0e572 --- /dev/null +++ b/tools/package-tools/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "experimentalDecorators": true, + "noUnusedParameters": true, + "lib": ["es2015", "dom"], + "module": "commonjs", + "moduleResolution": "node", + "baseUrl": ".", + "outDir": "../../dist/package-tools", + "strictNullChecks": true, + "noEmitOnError": true, + "noImplicitAny": true, + "target": "es5", + "types": [ + "node" + ] + }, + "files": [ + "./index.ts" + ] +}