diff --git a/.github/build.yml b/.github/workflows/build.yml similarity index 100% rename from .github/build.yml rename to .github/workflows/build.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..f968d29 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,21 @@ + +name: Publish + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: 12 + registry-url: https://registry.npmjs.org/ + - run: npm ci + - run: npm run tsc-publish-dry + - run: cd dist && npm publish --access public + env: + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} diff --git a/package-lock.json b/package-lock.json index 85d73d4..76706d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -656,6 +656,15 @@ "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", "dev": true }, + "@types/ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-Q0pVLfFSEkAnFgXF6Sbe5pJ/cZb14tNyFcBiwkIw5nJaGw8PFMXolfWsPIxG/ja7SmEHX/DjlpruRFGnG6lbjA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -697,6 +706,12 @@ "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", "dev": true }, + "@types/node": { + "version": "12.12.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.35.tgz", + "integrity": "sha512-ASYsaKecA7TUsDrqIGPNk3JeEox0z/0XR/WsJJ8BIX/9+SkMSImQXKWfU/yBrSyc7ZSE/NPqLu36Nur0miCFfQ==", + "dev": true + }, "@types/prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", @@ -829,6 +844,12 @@ "uri-js": "^4.2.2" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-escapes": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", @@ -1316,6 +1337,12 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -2343,6 +2370,15 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", @@ -4824,6 +4860,20 @@ "yargs-parser": "18.x" } }, + "tsc-publish": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/tsc-publish/-/tsc-publish-0.5.2.tgz", + "integrity": "sha512-Z/2yZSVFoeEgziTVeYc+jc6+2AygX9dnbwB6f3XuI4sSgTjoq5ggRGoTtuKcI91FzUeJq88rVZkN/VZmjbSzPw==", + "dev": true, + "requires": { + "@types/ignore-walk": "^3.0.1", + "@types/node": "^12.12.5", + "ansi-colors": "^4.1.1", + "commander": "^3.0.0", + "ignore-walk": "^3.0.3", + "strip-json-comments": "^3.0.1" + } + }, "tslib": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", diff --git a/package.json b/package.json index 5819345..2674101 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,11 @@ "test": "jest --verbose", "lint": "eslint src/**/*.ts test/**/*.ts", "lint:fix": "eslint --fix src/**/*.ts test/**/*.ts", - "build": "tsc" + "build": "tsc", + "watch": "tsc --watch", + "tsc-publish": "tsc-publish", + "tsc-publish-dry": "tsc-publish --dry-run", + "prepublishOnly": "echo \"Do not run publish directly, run tsc-publish\" && exit 1" }, "repository": { "type": "git", @@ -30,6 +34,7 @@ "eslint": "^6.8.0", "jest": "^25.3.0", "ts-jest": "^25.3.1", + "tsc-publish": "^0.5.2", "typescript": "^3.8.3" } }