Skip to content

Instantly share code, notes, and snippets.

@Akihide-Tsue
Last active May 17, 2024 09:44
Show Gist options
  • Save Akihide-Tsue/b82ebe50a1f429e5053890fc8a1b79d7 to your computer and use it in GitHub Desktop.
Save Akihide-Tsue/b82ebe50a1f429e5053890fc8a1b79d7 to your computer and use it in GitHub Desktop.
DangerJsでのconsole混入警告、PR差分肥大時の警告、package.jsonのdependencies内に直接@typesのパッケージをインストールさせない
import { danger, fail, warn } from "danger"
const modifiedFiles = danger.git.modified_files
modifiedFiles.forEach(async (file) => {
const diff = await danger.git.diffForFile(file)
// console.logが新規で追加された場合に警告する
if (diff && diff.diff.includes("console.log"))
warn(`:exclamation: console.log が追加されました。 (${file})`)
})
const checkLinesOfCode = async () => {
const diffLines = (await danger.git.linesOfCode("!yarn.lock")) ?? 0
console.log("diffLines", diffLines)
if (diffLines >= 1000 && diffLines < 1500)
warn(
`:exclamation: (${diffLines}行) 差分が大きすぎます!チケットを分割できるか確認して下さい!`,
)
if (diffLines >= 1500)
warn(
`:exclamation: (${diffLines}行) 差分が大きすぎます!チケットを分割してPull Request を細かくしましょう!`,
)
if (diffLines >= 2000)
warn(
`:no_entry: (${diffLines}行) 差分が大きすぎます!チケットを分割してPull Request を細かくしましょう!`,
)
}
checkLinesOfCode()
const checkDependencies = async () => {
const packageJsonUpdate = await danger.git.diffForFile("package.json")
if (packageJsonUpdate) {
const diff = JSON.parse(packageJsonUpdate.after)
const typeDependencies = Object.keys(diff.dependencies).filter(
(dependency) => dependency.startsWith("@types/"),
)
if (typeDependencies.length > 0) {
fail(
"直接 dependencies に @types ライブラリを追加しないでください。代わりに、`yarn add @types/package_name --dev` を使用してください。",
)
}
}
}
checkDependencies()
// CLI確認コマンド
// export DANGER_GITHUB_API_TOKEN='ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
// danger pr https://github.com/tentie-com/MusicAll-webfront/pull/585
name: Run DangerJS
on:
pull_request:
types: [opened, synchronize, edited]
jobs:
build:
name: Danger JS
runs-on: ubuntu-latest
timeout-minutes: 15
# [bot]を含む場合は除外
if: ${{ !contains(github.actor, '[bot]') }}
permissions: write-all
steps:
- name: checkout
uses: actions/checkout@v4
- name: Danger
uses: danger/danger-js@11.3.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_GITHUB_API_TOKEN }}
DANGER_DISABLE_TRANSPILATION: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment