mirror of
				https://github.com/pnpm/action-setup.git
				synced 2025-11-04 03:28:19 +08:00 
			
		
		
		
	Merge pull request #88 from KengoTODA/make-path-configurable
support projects that have package.json in non-root directory
This commit is contained in:
		@@ -38,6 +38,10 @@ If `run_install` is a YAML string representation of either an object or an array
 | 
			
		||||
 | 
			
		||||
**Optional** (_type:_ `string[]`) Additional arguments after `pnpm [recursive] install`, e.g. `[--frozen-lockfile, --strict-peer-dependencies]`.
 | 
			
		||||
 | 
			
		||||
### `package_json_file`
 | 
			
		||||
 | 
			
		||||
**Optional** File path to the `package.json` to read "packageManager" configutation. If not specified, `package.json` in the project root directory is used.
 | 
			
		||||
 | 
			
		||||
## Outputs
 | 
			
		||||
 | 
			
		||||
### `dest`
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,10 @@ inputs:
 | 
			
		||||
    description: If specified, run `pnpm install`
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'null'
 | 
			
		||||
  package_json_file:
 | 
			
		||||
    description: File path to the package.json to read "packageManager" configutation
 | 
			
		||||
    required: false
 | 
			
		||||
    default: 'package.json'
 | 
			
		||||
runs:
 | 
			
		||||
  using: node16
 | 
			
		||||
  main: dist/index.js
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -6,6 +6,7 @@ export interface Inputs {
 | 
			
		||||
  readonly version?: string
 | 
			
		||||
  readonly dest: string
 | 
			
		||||
  readonly runInstall: RunInstall[]
 | 
			
		||||
  readonly packageJsonFile: string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const options: InputOptions = {
 | 
			
		||||
@@ -18,6 +19,7 @@ export const getInputs = (): Inputs => ({
 | 
			
		||||
  version: getInput('version'),
 | 
			
		||||
  dest: parseInputPath('dest'),
 | 
			
		||||
  runInstall: parseRunInstall('run_install'),
 | 
			
		||||
  packageJsonFile: parseInputPath('package_json_file'),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
export default getInputs
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import { execPath } from 'process'
 | 
			
		||||
import { Inputs } from '../inputs'
 | 
			
		||||
 | 
			
		||||
export async function runSelfInstaller(inputs: Inputs): Promise<number> {
 | 
			
		||||
  const { version, dest } = inputs
 | 
			
		||||
  const { version, dest, packageJsonFile } = inputs
 | 
			
		||||
 | 
			
		||||
  // prepare self install
 | 
			
		||||
  await remove(dest)
 | 
			
		||||
@@ -15,7 +15,7 @@ export async function runSelfInstaller(inputs: Inputs): Promise<number> {
 | 
			
		||||
  await writeFile(pkgJson, JSON.stringify({ private: true }))
 | 
			
		||||
 | 
			
		||||
  // prepare target pnpm
 | 
			
		||||
  const target = await readTarget(version)
 | 
			
		||||
  const target = await readTarget(packageJsonFile, version)
 | 
			
		||||
  const cp = spawn(execPath, [path.join(__dirname, 'pnpm.js'), 'install', target, '--no-lockfile'], {
 | 
			
		||||
    cwd: dest,
 | 
			
		||||
    stdio: ['pipe', 'inherit', 'inherit'],
 | 
			
		||||
@@ -33,7 +33,7 @@ export async function runSelfInstaller(inputs: Inputs): Promise<number> {
 | 
			
		||||
  return exitCode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function readTarget(version?: string | undefined) {
 | 
			
		||||
async function readTarget(packageJsonFile: string, version?: string | undefined) {
 | 
			
		||||
  if (version) return `pnpm@${version}`
 | 
			
		||||
 | 
			
		||||
  const { GITHUB_WORKSPACE } = process.env
 | 
			
		||||
@@ -44,7 +44,7 @@ please run the actions/checkout before pnpm/action-setup.
 | 
			
		||||
Otherwise, please specify the pnpm version in the action configuration.`)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const { packageManager } = JSON.parse(await readFile(path.join(GITHUB_WORKSPACE, 'package.json'), 'utf8'))
 | 
			
		||||
  const { packageManager } = JSON.parse(await readFile(path.join(GITHUB_WORKSPACE, packageJsonFile), 'utf8'))
 | 
			
		||||
  if (typeof packageManager !== 'string') {
 | 
			
		||||
    throw new Error(`No pnpm version is specified.
 | 
			
		||||
Please specify it by one of the following ways:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user