@@ -18,6 +18,18 @@ arguments will be provided:
1818- ` core ` A reference to the [ @actions/core ] ( https://github.com/actions/toolkit/tree/main/packages/core ) package
1919- ` glob ` A reference to the [ @actions/glob ] ( https://github.com/actions/toolkit/tree/main/packages/glob ) package
2020- ` io ` A reference to the [ @actions/io ] ( https://github.com/actions/toolkit/tree/main/packages/io ) package
21+ - ` require ` Is available, with some caveats:
22+ - The location of the module that runs this action is where the Actions
23+ runner downloads the github-script action to, so the ` require ` passed to
24+ your script is actually a proxy that intercepts calls to require relative
25+ paths and transforms them into an absolute path in the working directory,
26+ instead.
27+ - If you want to require an npm module in your working directory, you still
28+ need to specify the relative path, including ` node_modules ` , such as
29+ ` ./node_modules/lodash ` .
30+ - If for some reason you need the non-wrapped ` require ` , there is an escape
31+ hatch available: ` __original_require__ ` is the original value of ` require `
32+ without our wrapping applied.
2133
2234Since the ` script ` is just a function body, these values will already be
2335defined, so you don't have to (see examples below).
@@ -243,12 +255,10 @@ jobs:
243255 - uses : actions/github-script@v3
244256 with :
245257 script : |
246- const script = require(`${process.env.GITHUB_WORKSPACE} /path/to/script.js`)
258+ const script = require(`. /path/to/script.js`)
247259 console.log(script({github, context}))
248260` ` `
249261
250- _Note that the script path given to ` require()` must be an **absolute path** in this case, hence using [`GITHUB_WORKSPACE`](https://docs.github.com/en/actions/configuring-and-managing-workflows/using-environment-variables#default-environment-variables)._
251-
252262And then export a function from your module:
253263
254264` ` ` javascript
@@ -282,24 +292,24 @@ jobs:
282292 - uses : actions/checkout@v2
283293 - uses : actions/github-script@v3
284294 env :
285- SHA: " ${{env.parentSHA}}"
295+ SHA : ' ${{env.parentSHA}}'
286296 with :
287297 script : |
288- const script = require(` ${process.env.GITHUB_WORKSPACE} /path/to/script.js`)
298+ const script = require(`. /path/to/script.js`)
289299 await script({github, context, core})
290300` ` `
291301
292302And then export an async function from your module:
293303
294304` ` ` javascript
295- module .exports = async ({ github, context, core }) => {
296- const { SHA } = process .env
297- const commit = await github .repos .getCommit ({
298- owner: context .repo .owner ,
299- repo: context .repo .repo ,
300- ref: ` ${ SHA } `
301- })
302- core .exportVariable (' author' , commit .data .commit .author .email );
305+ module.exports = async ({github, context, core}) => {
306+ const {SHA} = process.env
307+ const commit = await github.repos.getCommit({
308+ owner : context.repo.owner,
309+ repo : context.repo.repo,
310+ ref : ` ${SHA}`
311+ })
312+ core.exportVariable('author', commit.data.commit.author.email)
303313}
304314```
305315
@@ -324,13 +334,18 @@ jobs:
324334 - uses : actions/github-script@v3
325335 with :
326336 script : |
327- const execa = require(`${process.env.GITHUB_WORKSPACE} /node_modules/execa`)
337+ const execa = require(`. /node_modules/execa`)
328338
329339 const { stdout } = await execa('echo', ['hello', 'world'])
330340
331341 console.log(stdout)
332342` ` `
333343
344+ _(Note that at this time, one still has to specify ` node_modules` in the
345+ require path for modules in the working directory of the step that is
346+ running. Hopefully we will have a solution for this in the future, but not
347+ quite, yet.)_
348+
334349# ## Use env as input
335350
336351You can set env vars to use them in your script :
0 commit comments