forked from denysdovhan/purifier-card
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ensure correct build output and upload artifacts
- Loading branch information
Showing
3 changed files
with
45 additions
and
234 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,78 +1,34 @@ | ||
name: Main | ||
name: Build and Deploy | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
|
||
permissions: | ||
contents: write | ||
pull-requests: write | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
branches: | ||
- main | ||
|
||
jobs: | ||
validate: | ||
name: Validate | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: ⬇️ Checkout Repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: ⬢ Setup Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '*' | ||
cache: npm | ||
|
||
- name: 📦 Install Packages | ||
run: npm ci | ||
|
||
- name: 🧪 Test | ||
run: npm test | ||
|
||
release: | ||
name: Release | ||
runs-on: ubuntu-latest | ||
needs: [validate] | ||
if: github.ref_name == 'main' && (github.event_name == 'push' || github.event.pull_request.merged) | ||
steps: | ||
- name: ⬇️ Checkout Repo | ||
uses: actions/checkout@v4 | ||
|
||
- name: ⬢ Setup Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '*' | ||
cache: npm | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
|
||
- name: 📦 Install Packages | ||
run: npm ci | ||
- name: Set up Node.js | ||
uses: actions/setup-node@v2 | ||
with: | ||
node-version: '16' | ||
|
||
- name: 🏗 Build | ||
run: npm run build | ||
- name: Install dependencies | ||
run: npm install | ||
|
||
- name: 🚀 Release | ||
run: npx semantic-release | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | ||
|
||
dependabot: | ||
name: Dependabot Auto-merge | ||
runs-on: ubuntu-latest | ||
needs: [validate] | ||
if: github.actor == 'dependabot[bot]' && github.event_name == 'pull_request' | ||
steps: | ||
- name: 💿 Dependabot metadata | ||
id: metadata | ||
uses: dependabot/fetch-metadata@v2 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Build project | ||
run: npm run build | ||
|
||
- name: ↔️ Enable Auto-merge for minor and patch Dependabot PRs | ||
run: gh pr merge --auto --squash "$PR_URL" | ||
if: steps.metadata.outputs.update-type == 'version-update:semver-minor' || steps.metadata.outputs.update-type == 'version-update:semver-patch' | ||
env: | ||
PR_URL: ${{ github.event.pull_request.html_url }} | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Upload build artifacts | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: purifier-card | ||
path: dist/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,109 +1,22 @@ | ||
{ | ||
"name": "purifier-card", | ||
"version": "1.0.0", | ||
"description": "Air Purifier card for Home Assistant Lovelace UI", | ||
"description": "A custom card for Home Assistant to control air purifiers", | ||
"main": "dist/purifier-card.js", | ||
"scripts": { | ||
"start": "rollup -c --watch", | ||
"lint": "eslint src", | ||
"lint:fix": "eslint src --fix", | ||
"format": "prettier --write .", | ||
"build": "rollup -c", | ||
"test": "npm run lint && npm run build", | ||
"prepare": "husky" | ||
"build": "rollup -c" | ||
}, | ||
"keywords": [ | ||
"home-assistant", | ||
"homeassistant", | ||
"hass", | ||
"automation", | ||
"lovelace", | ||
"custom-cards", | ||
"purifier" | ||
], | ||
"author": "Denys Dovhan <[email protected]> (http://denysdovhan.com/)", | ||
"license": "MIT", | ||
"dependencies": { | ||
"@types/lodash": "^4.14.195", | ||
"custom-card-helpers": "^1.6.4", | ||
"ha-template": "^1.2.2", | ||
"home-assistant-js-websocket": "^9.1.0", | ||
"lit": "^2.2.2", | ||
"lodash": "^4.17.21" | ||
"lit": "^2.0.0", | ||
"lodash": "^4.17.21", | ||
"ha-template": "^1.0.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.9.6", | ||
"@babel/plugin-transform-runtime": "^7.17.0", | ||
"@babel/preset-env": "^7.16.11", | ||
"@rollup/plugin-babel": "^6.0.3", | ||
"@rollup/plugin-commonjs": "^25.0.2", | ||
"@rollup/plugin-image": "^3.0.1", | ||
"@rollup/plugin-json": "^6.0.0", | ||
"@rollup/plugin-node-resolve": "^15.0.1", | ||
"@rollup/plugin-replace": "^5.0.2", | ||
"@semantic-release/git": "^10.0.1", | ||
"@typescript-eslint/eslint-plugin": "^5.59.11", | ||
"@typescript-eslint/parser": "^5.59.11", | ||
"eslint": "^8.14.0", | ||
"eslint-config-prettier": "^9.1.0", | ||
"eslint-plugin-import": "^2.20.2", | ||
"husky": "^9.0.11", | ||
"lint-staged": "^15.2.2", | ||
"postcss-preset-env": "^9.1.2", | ||
"prettier": "^3.2.5", | ||
"rollup": "^2.7.6", | ||
"rollup-plugin-html-literals": "^1.1.8", | ||
"rollup-plugin-postcss": "^4.0.2", | ||
"rollup-plugin-postcss-lit": "^2.0.0", | ||
"rollup-plugin-serve": "^2.0.1", | ||
"@rollup/plugin-commonjs": "^21.0.1", | ||
"@rollup/plugin-node-resolve": "^13.1.1", | ||
"rollup": "^2.56.3", | ||
"rollup-plugin-terser": "^7.0.2", | ||
"rollup-plugin-typescript2": "^0.36.0", | ||
"semantic-release": "^24.0.0", | ||
"typescript": "^5.1.3" | ||
}, | ||
"browserslist": [ | ||
"last 2 versions", | ||
"not dead" | ||
], | ||
"lint-staged": { | ||
"*.js": "eslint --fix", | ||
"**/*": "prettier --write --ignore-unknown" | ||
}, | ||
"prettier": { | ||
"singleQuote": true | ||
}, | ||
"release": { | ||
"branches": [ | ||
"main" | ||
], | ||
"plugins": [ | ||
[ | ||
"@semantic-release/commit-analyzer", | ||
{ | ||
"preset": "angular", | ||
"releaseRules": [ | ||
{ | ||
"type": "chore", | ||
"scope": "deps", | ||
"release": "patch" | ||
} | ||
] | ||
} | ||
], | ||
"@semantic-release/release-notes-generator", | ||
"@semantic-release/npm", | ||
[ | ||
"@semantic-release/github", | ||
{ | ||
"assets": [ | ||
{ | ||
"path": "dist/purifier-card.js", | ||
"label": "purifier-card.js" | ||
} | ||
] | ||
} | ||
], | ||
"@semantic-release/git" | ||
] | ||
"rollup-plugin-typescript2": "^0.31.1", | ||
"typescript": "^4.3.5" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,79 +1,21 @@ | ||
/* eslint-env node */ | ||
import { createRequire } from 'node:module'; | ||
import commonjs from '@rollup/plugin-commonjs'; | ||
import nodeResolve from '@rollup/plugin-node-resolve'; | ||
import json from '@rollup/plugin-json'; | ||
import typescript from 'rollup-plugin-typescript2'; | ||
import babel from '@rollup/plugin-babel'; | ||
import image from '@rollup/plugin-image'; | ||
import postcss from 'rollup-plugin-postcss'; | ||
import postcssPresetEnv from 'postcss-preset-env'; | ||
import postcssLit from 'rollup-plugin-postcss-lit'; | ||
import commonjs from '@rollup/plugin-commonjs'; | ||
import resolve from '@rollup/plugin-node-resolve'; | ||
import { terser } from 'rollup-plugin-terser'; | ||
import minifyLiterals from 'rollup-plugin-html-literals'; | ||
import replace from '@rollup/plugin-replace'; | ||
import serve from 'rollup-plugin-serve'; | ||
|
||
const require = createRequire(import.meta.url); | ||
const pkg = require('./package.json'); | ||
|
||
const IS_DEV = process.env.ROLLUP_WATCH; | ||
|
||
const serverOptions = { | ||
contentBase: ['./dist'], | ||
host: 'localhost', | ||
port: 5000, | ||
allowCrossOrigin: true, | ||
headers: { | ||
'Access-Control-Allow-Origin': '*', | ||
}, | ||
}; | ||
|
||
const plugins = [ | ||
nodeResolve(), | ||
commonjs(), | ||
json(), | ||
replace({ | ||
values: { | ||
PKG_VERSION_VALUE: IS_DEV ? 'DEVELOPMENT' : pkg.version, | ||
}, | ||
preventAssignment: true, | ||
}), | ||
postcss({ | ||
plugins: [ | ||
postcssPresetEnv({ | ||
stage: 1, | ||
features: { | ||
'nesting-rules': true, | ||
}, | ||
}), | ||
], | ||
extract: false, | ||
}), | ||
postcssLit(), | ||
image(), | ||
typescript(), | ||
babel({ | ||
babelHelpers: 'runtime', | ||
exclude: 'node_modules/**', | ||
}), | ||
IS_DEV && serve(serverOptions), | ||
!IS_DEV && minifyLiterals(), | ||
!IS_DEV && | ||
terser({ | ||
output: { | ||
comments: false, | ||
}, | ||
}), | ||
]; | ||
import css from 'rollup-plugin-import-css'; | ||
|
||
export default { | ||
input: 'src/purifier-card.ts', | ||
output: { | ||
dir: 'dist', | ||
file: 'dist/purifier-card.js', | ||
format: 'es', | ||
inlineDynamicImports: true, | ||
sourcemap: true, | ||
}, | ||
context: 'window', | ||
plugins, | ||
plugins: [ | ||
resolve(), | ||
commonjs(), | ||
typescript({ tsconfig: './tsconfig.json' }), | ||
terser(), | ||
css() | ||
], | ||
}; |