![](/img/trans.png)
[英]How to update the package.json version using semantic-release/git?
[英]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.