簡體   English   中英

在 package.json 上發布語義發布

[英]Semantic Release publishing on package.json

我目前正在嘗試使用語義發布和 GitHub 操作將我的 npm package 自動發布到 GitHub 包。 package 發布成功,但安裝后,在發布的 package 中僅找到package.json文件。

我有一個構建命令,可以將我的 package 構建到dist文件夾中,並希望將 dist 文件夾的內容發布到 GitHub 包中。

以下是 package 版本和 GitHub 操作工作流的配置文件

下面的工作流運行測試並創建一個新版本到 GitHub 包

測試發布.yml

name: Test and Publish
on:
  push:
    branches: 'main'
    paths-ignore:
      - .gitignore
      - README.md

jobs:
  test-publish:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Check for forgotten it.only in unit tests
        run: "! git grep -F 'it.only' -- src/__tests__"
      - name: Install dependencies
        run: yarn
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Run Tests
        run: yarn test
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Prepare Publish to NPM
        run: yarn run preparePub
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
      - name: Release
        run: npx semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.NPM_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
          GITHUB_TOKEN_NPM: ${{ secrets.NPM_TOKEN }}

下面是 package.json package.json

{
  "name": "@organisation/component-library",
  "version": "0.0.0-semantic-release",
  "author": "Author Name",
  "license": "MIT",
  "description": "Component library",
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/organisation/component-library.git"
  },
  "main": "dist/cjs/index.js",
  "module": "dist/esm/index.js",
  "files": [
    "dist"
  ],
  "scripts": {
    "build": "rm -rf dist/ && yarn run prettier --write src/ && yarn run lint && yarn build:esm && yarn build:cjs",
    "build:cjs": "tsc --module CommonJS --OutDir dist/cjs",
    "build:esm": "tsc",
    "lint": "eslint src/**/*.ts src/**/*.tsx",
    "test": "jest",
    "preparePub": "yarn run build &&  cp package.json dist"
  },
  "devDependencies": {
    "@babel/preset-env": "^7.19.1",
    "@babel/preset-react": "^7.18.6",
    "@babel/preset-typescript": "^7.18.6",
    "@semantic-release/commit-analyzer": "^9.0.2",
    "@semantic-release/github": "^8.0.6",
    "@semantic-release/npm": "^9.0.1",
    "@semantic-release/release-notes-generator": "^10.0.3",
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@types/jest": "^29.0.3",
    "@types/node": "^18.7.15",
    "@types/react": "^18.0.18",
    "@types/react-dom": "^18.0.6",
    "@types/styled-components": "^5.1.26",
    "@typescript-eslint/eslint-plugin": "^5.0.0",
    "eslint": "^8.0.1",
    "eslint-config-standard-with-typescript": "^23.0.0",
    "eslint-plugin-import": "^2.25.2",
    "eslint-plugin-jsx-a11y": "^6.6.1",
    "eslint-plugin-n": "^15.0.0",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "^7.31.8",
    "husky": "^8.0.1",
    "jest": "^29.0.3",
    "jest-environment-jsdom": "^29.0.3",
    "prettier": "^2.7.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "typescript": "*"
  },
  "peerDependencies": {
    "react": "^17.0.2",
    "react-dom": "^17.0.2"
  },
  "husky": {
    "hooks": {
      "pre-commit": "yarn run lint && git add -A ."
    }
  },
  "dependencies": {
    "styled-components": "^5.3.6"
  }
}

preparePub腳本用於建庫,復制package.json文件到list文件夾

下面是語義發布配置文件,我將 package root 設置為 dist .releaserc

{
  "branches": [
    "main",
    {
      "name": "beta",
      "prerelease": true
    }
  ],
  "repositoryUrl": "https://github.com/organisation/component-library",
  "debug": "true",
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    [
      "@semantic-release/npm",
      {
        "pkgRoot": "dist"
      }
    ],
    "@semantic-release/github"
  ]
}

tsconfig.json

{
  "compilerOptions": {
    "target": "ES6",
    "lib": ["ES5", "ES2015", "ES2016", "DOM", "ESNext"],
    "jsx": "react",
    "module": "ES2015",
    "moduleResolution": "node",
    "types": ["node", "jest", "@testing-library/jest-dom"],
    "declaration": true,
    "sourceMap": true,
    "outDir": "dist/esm",
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitAny": true,
  },
  "include": ["src/**/*.ts", "src/**/*.tsx", "src/jest.setup.ts"]
}

這里的問題是 GitHub Actions 管道似乎工作正常但是在 package 被發布到 GitHub 包並安裝在我想使用該庫的任何應用程序中之后,只有package.json文件在已安裝的庫中找到並且沒有任何內容列表文件夾。

我假設當您在本地構建時,您有一個包含 package.json 的build文件夾和一個 cjs 文件夾,但只有文件本身通過(因為這是我過去所做的)。

嘗試讓您的 package.json files屬性看起來像這樣:

"files": [
  "dist/*"
],

這也是我發布文件夾所需要的。

問題出在pkgRoot中的.releaserc 我沒有將它設置為dist ,而是設置為dist/並且它以某種方式工作。 有趣的是,我之前只配置了dist並且它有效。 謝謝大家的努力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM