npm exec 스크립트 실행 권한 에러 해결
npm exec 명령어를 사용할 때 발생하는 실행 권한 에러와 그 해결 방법을 다룹니다.
Introduction
npm exec를 사용하여 스크립트를 실행할 때 권한 에러가 발생하는 경우가 있습니다. 특히 Windows와 Unix 환경 간의 차이로 인해 문제가 발생할 수 있습니다.
Environment
npm --version
# 10.2.4
node --version
# v20.11.0
# 실행 환경
OS: Windows 11
Shell: PowerShellProblem
npm exec로 스크립트를 실행할 때 다음과 같은 에러가 발생했습니다:
$ npm exec ./scripts/deploy.sh
# Windows PowerShell 에러
./scripts/deploy.sh : File cannot be loaded because running scripts is disabled on this system.
# 또는 Unix/Linux 에러
bash: ./scripts/deploy.sh: Permission deniedSolution
1. Windows에서 Unix 스크립트 실행
# 방법 1: bash로 실행
$ bash ./scripts/deploy.sh
# 방법 2: npm script에서 실행
# package.json
{
"scripts": {
"deploy": "bash ./scripts/deploy.sh"
}
}
# 방법 3: PowerShell 실행 정책 변경
$ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser2. Unix/Linux에서 권한 설정
# 실행 권한 부여
$ chmod +x ./scripts/deploy.sh
# 스크립트 실행
$ ./scripts/deploy.sh
# 또는 npm script 사용
$ npm run deploy3. npm exec 옵션 설정
# --yes 옵션으로 프롬프트 없이 실행
$ npx --yes create-react-app my-app
# 특정 패키지 버전 지정
$ npx typescript@5.3.3 tsc --version
# 로컬 패키지 실행
$ npx --no-install eslint .4. 크로스 플랫폼 스크립트
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
"start": "cross-env NODE_ENV=development webpack serve",
"lint": "cross-env NODE_ENV=development eslint src/",
"test": "cross-env NODE_ENV=test jest --coverage"
},
"devDependencies": {
"cross-env": "^7.0.3"
}
}5. package.json bin 설정
{
"name": "my-cli",
"bin": {
"my-cli": "./bin/cli.js"
}
}#!/usr/bin/env node
// bin/cli.js
const { program } = require('commander');
program
.version('1.0.0')
.command('deploy')
.description('Deploy the application')
.action(() => {
console.log('Deploying...');
});
program.parse(process.argv);6. Windows 특정 문제 해결
# npm global bin 경로 확인
$ npm bin -g
# Windows에서 symbolic link 문제 해결
$ npm config set link true
# 또는 Git Bash 사용
$ bash -c "npm exec ./scripts/deploy.sh"Lessons Learned
- 크로스 플랫폼 고려: Windows와 Unix 환경을 모두 지원하는 스크립트를 작성하세요
- cross-env 활용: 환경 변수 설정 시 cross-env를 사용하세요
- 실행 권한 확인: Unix/Linux에서는 스크립트 실행 권한을 확인하세요
- npm script 활용: 직접 실행보다 npm script를 통해 실행하세요
- PowerShell 정책: Windows에서는 실행 정책을 적절히 설정하세요
This blog does not accept any external sponsorships, affiliate marketing, or ad revenue.