Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add post-build hook #992

Merged
merged 2 commits into from
Jun 8, 2024
Merged

Conversation

oelmekki
Copy link
Contributor

@oelmekki oelmekki commented Jun 6, 2024

Details

Allow to configure a hook to be ran whenever a build is made, so that users can perform post-build tasks. This is especially useful for the dev task, as a build is ran each time the filetree changes.

This is an opportunity for users to perform custom tasks that they may need on every builds. To do so, they just have to declare a POST_BUILD_SCRIPT environment variable containing the path to a script, like this:

POST_BUILD_SCRIPT=./post-build.cjs plasmo dev

The provided script must export a function, which will be executed:

module.exports = function() {
  // do stuff after build is done
}

Code of Conduct

  • I agree to follow this project's Code of Conduct
  • I agree to license this contribution under the MIT LICENSE
  • I checked the current PR for duplication.

Allow to configure a hook to be ran whenever a build is made, so that
users can perform post-build tasks. This is especially useful for the
`dev` task, as a build is ran each time the filetree changes.

This is an opportunity for users to perform custom tasks that they may
need on every builds. To do so, they just have to declare a
POST_BUILD_SCRIPT environment variable containing the path to a script,
like this:

    POST_BUILD_SCRIPT=./post-build.cjs plasmo dev

The provided script must export a function, which will be executed:

```javascript
module.exports = function() {
  // do stuff after build is done
}
```
Comment on lines +228 to +229
if (!process.env.POST_BUILD_SCRIPT)
return
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: for readability, we encapsulate early return with bracket

return
}

const postBuild = require(postBuildPath)
Copy link
Contributor

@louisgv louisgv Jun 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: would be nice if this script could also be in TS 🤑 (maybe run it via tsx, or run it via some type of bundling technique (prob overkill for a postbuild script)

Also would be nice if we don't have to use require, and instead use async import instead.

I think we can put this under a future issue

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ref: #993

@louisgv louisgv changed the title ADD post-build hook feat: add post-build hook Jun 8, 2024
Copy link
Contributor

@louisgv louisgv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

overall, lgtm 👍

@louisgv louisgv merged commit 082f22d into PlasmoHQ:main Jun 8, 2024
1 check passed
const postBuildPath = resolve(process.env.POST_BUILD_SCRIPT)

if (!existsSync(postBuildPath)) {
console.error("Post-build file does not exist or is not readable:", postBuildPath)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should use the logger utils instead

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants