Let say I have a workspace with 2 packages (A and B) and I want to release and publish them to npm.
root
└── dist
├── A
└── B
└── projects
├── A
└── B
The documentation of @semantic-release/npm states that pkgRoot should be used to specify the directory path to publish.
As A and B have both different distribution directory paths it was clear that a global configuration file (in the root-level dir) was not appropriate. So I have put a .releaserc.json file in both projects/A and projects/B containing the following:
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/npm",
{
"pkgRoot": "dist/A" // for A, and "dist/B" for B
}
],
"@semantic-release/github"
]
}
But running MSR in dry-run mode throws the following error :
ENOPKG Missing `package.json` file.
A package.json file (https://docs.npmjs.com/files/package.json) at the root of your project is required to release on npm.
Please follow the npm guideline (https://docs.npmjs.com/getting-started/creating-node-modules) to create a valid package.json file.
[multi-semantic-release]: AggregateError:
SemanticReleaseError: Missing `package.json` file.
at module.exports (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/@semantic-release/npm/lib/get-error.js:6:10)
at module.exports (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/@semantic-release/npm/lib/get-pkg.js:17:33)
at async verifyConditions (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/@semantic-release/npm/index.js:32:17)
at async validator (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/semantic-release/lib/plugins/normalize.js:34:24)
at async /Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/semantic-release/lib/plugins/pipeline.js:37:34
at async Promise.all (index 0)
at async next (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/p-reduce/index.js:16:18)
at /Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/semantic-release/lib/plugins/pipeline.js:54:11
at async Object.pluginsConf.<computed> [as verifyConditions] (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/semantic-release/lib/plugins/index.js:80:11)
at async run (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/semantic-release/index.js:94:5)
at async module.exports (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/semantic-release/index.js:258:28)
at async releasePackage (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/multi-semantic-release/lib/multiSemanticRelease.js:201:15)
at async Promise.all (index 1)
at async multiSemanticRelease (/Users/badisi/.npm/_npx/fc5f6a55a6a495a8/node_modules/multi-semantic-release/lib/multiSemanticRelease.js:96:2)
There is a package.json file in root, projects/A, projects/B, dist/A and dist/B folders.
So before further investigating this issue, I was wondering what's the MSR recommendation in such a case ?
Forget it..
I just found the issue by re-reading my post 😅.
Paths are relatives to the .releaserc.json file, not the workspace.
So it should be ../../dist/A and ../../dist/B.
Let say I have a workspace with 2 packages (A and B) and I want to release and publish them to npm.
The documentation of
@semantic-release/npm
states thatpkgRoot
should be used to specify the directory path to publish.As
A
andB
have both different distribution directory paths it was clear that a global configuration file (in the root-level dir) was not appropriate. So I have put a.releaserc.json
file in bothprojects/A
andprojects/B
containing the following:But running MSR in dry-run mode throws the following error :
There is a
package.json
file inroot
,projects/A
,projects/B
,dist/A
anddist/B
folders.So before further investigating this issue, I was wondering what's the MSR recommendation in such a case ?
Thanks!