Run build script before publishing with semantic-release
Lets say you like the comfort of making semantic-release publishing your work to npm and/or Github (you should!) but your build step requires the version to be present in package.json to make it work. This works with earlier versions of semantic-release (<8), but not with the newer ones (>8).
semantic-release-build is a fairly simple and rather naïve approach to the
problem. It's a plugin for the
publish-hook
for semantic-release. It will simply spawn npm run build (or yarn) after
semantic-release has determined the new version. It will first rewrite your
package.json with the new version number. Then run npm/yarn run build. And
then restore package.json to it's original state. This way you can get the
version number of your project inside e.g. a banner comment in toy build
artifacts.
The plugin is supposed to run inside the publish-hook for semantic-release.
You don't have to set npm or yarn explicitly. By default it will run
npm run build. But if yarn is available in your path (which yarn) and if a
yarn.lock-file is present in your projects root it will run yarn run build.
Inside package.json:
"release": {
// ...your other plugins settings
"publish": [
"semantic-release-build",
"@semantic-release/npm",
"@semantic-release/github"
]
}Disclaimer: Make sure that semantic-release-build runs before other
plugins, otherwise it will have no effect.
semantic-release-build can be customized in one way – you can specify flags to
attatch to your npm run build call.
Note that you don't have to attatch the extra -- which is usually required by
npm. It will be attatched for you. This is to make it work seamlessly between
npm and yarn.
Inside package.json:
"release": {
// ...your other plugins settings
"publish": [
{
"path": "semantic-release-build",
"flags": "--out-dir build"
}
]
}Thanks goes to these people (emoji key):
Adam Bergman 💻 📖 |
|---|
This project follows the all-contributors specification. Contributions of any kind welcome!
MIT