코어 포인트
gulp.js의 단순성은 가장 매력적인 기능 중 하나이며, 개발자는
에서 작업 함수를 작성하고 명령 줄에서 실행할 수 있습니다. 그러나 전달 된 명령 줄 매개 변수를 사용하기위한 작업에 지원하지는 않습니다.
Gulp 작업에는 일반적으로 매개 변수가 필요하지 않지만 매개 변수는 경우에 따라 유용 할 수 있습니다. 예를 들어, FTP 자격 증명을 매개 변수로 전달하면 보안을 향상시키고 하드 코딩 된 민감한 정보를 방지 할 수 있습니다. -
속성은 프로세스, 스크립트 및 모든 명령 줄 매개 변수를 포함하는 배열을 반환합니다. 이 배열은 매개 변수 값을 포함하는 객체를 생성하기 위해
gulpfile.js
로 구문 분석 할 수 있습니다.
Gulp 작업이 항상 수신 매개 변수를 필요로하는 것은 아니지만 경우에 따라 매우 유용합니다. 매개 변수 구문 분석 코드는 모든 node.js 명령 줄 프로세스에서 사용할 수 있으며 Commander 모듈은 비 GULP 프로젝트에보다 강력한 기능을 제공합니다. -
나는 gulp.js를 매우 좋아하고 최근의 조사에 따르면 프론트 엔드 개발자의 거의 44%가 Gulp 작업을 사용하고 있습니다.
-
Gulp의 단순성은 가장 매력적인 기능 중 하나입니다.
process.argv
: gulpfile.js
에서 작업 함수를 쓸 수 있습니다
- 그런 다음
를 사용하여 명령 줄에서 작업을 실행하십시오. 작업은 원하는만큼 단순하거나 복잡 할 수 있으며 추가 하위 작업을 포함 할 수 있습니다.
그러나이 작업에서 사용할 수있는 명령 줄 매개 변수를 전달하는 것은 불가능합니다.
(여기서 )
이 매개 변수는 작업이 아니라 GULP 응용 프로그램 자체로 전달됩니다. Gulp는 이러한 값을 이해하지 못하므로 gulpfile.js
에서 사용할 수 없으며 작업 기능에서 확인하거나 사용할 수 없습니다.
Gulp 작업에는 매개 변수가 필요합니까? <code class="language-javascript">gulp.task('doSomething', () => {
// 执行某些操作
});</code>
일반적으로 필요하지 않습니다. 그렇지 않으면 매개 변수를 작업에 전달하는 기능은 몇 년 전에 추가됩니다! Gulp 작업은 JavaScript로 작성되므로 코드에서 기본값을 설정할 수 있습니다.
와 같은 환경 변수를 분석 할 수도 있습니다. 예를 들어, 라이브 서버에서 값이 생산으로 설정되었는지 또는 유사한 지 확인할 수 있습니다. 그런 다음이 설정을 사용하여 작업이 실행되는 동안 JavaScript 소스 파일을 축소할지 여부를 결정할 수 있습니다.
gulp doSomething
는 이제 작업을 실행하기 전에 Linux/Mac 또는 Windows에서
를 설정할 수 있습니다. 그런 다음 javaScript 파일을 압축하기 전에 및
문을 삭제합니다. <code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>
마지막으로, 작업이 약간 다른 작업을 수행하려면 새로운 작업을 만들 수 있습니다. 예를 들어 필요에 따라 순서대로 실행되도록 작업을 함께 연결할 수 있습니다.<code class="language-javascript">gulp.task('doSomething', () => {
// 执行某些操作
});</code>
run gulp doSomething1
첫 번째 작업이 수행됩니다. 실행 gulp doSomething2
는 작업 이름의 선택적 배열에서 종속성으로 정의되기 때문에 두 작업을 순서대로 수행합니다. doSomething1
매개 변수를 고려해야합니까?
더 나은 대안이있을 때 매개 변수를 사용하지 마십시오. 매개 변수는 다음 GULP 버전에서 유효한 명령 줄 옵션이 될 수 있습니다.
다시 말해, 항상 몇 가지 특별한 상황이 있습니다 ...
> 1
는 일반적으로 ID 및 암호와 같은 하드 코드 자격 증명을 로 피해야합니다. Vinyl-FTP 플러그인을 사용하여 파일을 서버에 배포하는 다음 작업을 고려하십시오.
(정통, FTP는 배포하기에 좋은 방법이 아니지만 많은 개발자가 여전히 사용하고 있으며 일부 호스트에서 유일한 옵션 일 수 있습니다.) --option1
.
이 방법에는 몇 가지 문제가 있습니다
ftp 호스트, 사용자 ID, 비밀번호 및 경로는 파일에 하드 코딩됩니다. 코드가 공개 GitHub 저장소에 저장되어 있는데 누구나보고, 복제하고 실행할 수 있다면 보안 문제가 발생할 수 있습니다.
모든 개발자는 언제든지 모든 장치에서 실행할 수 있습니다. 이것은 배포 시간을 제어하려는 대규모 팀에게는 이상적이지 않습니다.
자격 증명이 변경되면 배포 작업이 여전히 유효한지 확인하려면 수동으로 업데이트해야합니다.
> 2. 다른 소스, 빌드 또는 작업 위치
Gulp는 일반적인 웹 사이트 작업 이외의 목적으로 사용할 수 있습니다. 예를 들어, 폴더를 지우고 데이터베이스를 작성하고 파일을 전송하는 등 몇 가지 일반적인 작업이있을 수 있습니다. 데이터베이스 또는 폴더 이름과 같은 하드 코딩 된 콘텐츠는 이러한 작업의 실용성을 줄입니다. gulpfile.js
> 3
수십 개의 플러그인과 관련된 복잡한 작업을 상상해보십시오. 여러 하위 작업으로 분할하는 것이 실용적이지 않으면 작업을 실행하기 전에 구성 옵션을 추가하기 위해
를 직접 편집하기가 어려워 질 수 있습니다. <code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>
당신은 더 특별한 상황을 생각할 수 있습니다 (의견을 환영합니다!)
gulp.js 태스크에 매개 변수를 전달하는 방법
속성은 프로세스, 스크립트 및 모든 명령 줄 매개 변수를 포함하는 배열을 반환합니다. 예를 들어,
는 다음 배열을 반환합니다 (값은 운영 체제 및 설정에 따라 다를 수 있음) :
이 배열은
에서 구문 분석 할 수 있습니다. 다음 코드는 매개 변수 값을 가진 라는 이름의 객체를 만듭니다.
-
이 함수는 배열을 통해 고리합니다. 하나 이상의 대시로 시작하는 값이 발생하면 객체에 새 지명 된 값이 생성되며
로 설정됩니다. 대시없이 값이 발생하면 이전 지명 값 (사용 가능한 경우)을 문자열로 설정합니다. - 우리가
를 실행할 때 gulp task1 --a 123 --b "my string" --c
객체는 다음과 같이 설정됩니다.
arg
따라서 필요에 따라 이러한 값을 확인하고 사용할 수 있습니다.
<code class="language-javascript">gulp.task('doSomething', () => {
// 执行某些操作
});</code>
가 의 상단에 설정되었다고 가정하고, 우리는 다음을 통과 할 수 있도록 FTP 배포 작업을 다시 쓸 수 있습니다.
사용자 ID as 파라미터
암호 매개 변수
arg
gulpfile.js
배포는 적절한 FTP 자격 증명으로 작업을 실행할 때만 발생합니다.
요약
우리가 보았 듯이 소량의 사용자 정의 코드를 사용하면 매개 변수를 GULP 작업으로 전달할 수 있습니다. 귀하의 작업에는 일반적으로 수신 매개 변수가 필요하지 않지만 경우에 따라 매우 유용하다는 것을 알 수 있습니다. 이것은 도구 상자에서 마스터해야 할 좋은 기술입니다. -
파라미터 구문 분석 코드는 모든 node.js 명령 줄 프로세스에서 사용할 수 있습니다. 그러나 GULP가 아닌 프로젝트에서 필요한 경우 사령관 모듈은보다 강력한 기능을 제공합니다. --user
나는 당신이 이것이 유용하다는 것을 알기를 바랍니다. 물론, 매개 변수를 Gulp 작업에 전달할 수 있다고해서 --u
를 그렇게해야한다는 의미는 아닙니다! 이 접근법에 대해 더 좋은 사용 사례를 생각해 내면 의견에 알려주십시오.
이 기사는 Tim Severien이 검토했습니다. itepoint 컨텐츠를 최대한 활용 한 모든 Sitepoint Peer Reviewers에게 감사합니다! -
Gulp 작업 (FAQ)에 매개 변수를 전달하는 것에 대해 자주 묻는 질문
명령 줄에서 매개 변수를 GULP 작업에 전달하는 방법은 무엇입니까?
--password
배열을 사용하여 매개 변수를 명령 줄에서 Gulp 작업에 전달할 수 있습니다. 이 배열에는 node.js 프로세스를 시작할 때 전달 된 명령 줄 매개 변수가 포함되어 있습니다. 이 배열의 처음 두 요소는 node.js 실행 파일의 경로와 Gulp 파일로가는 경로입니다. 다른 매개 변수는 세 번째 위치에서 시작 하여이 배열에 추가됩니다. --p
배열을 인덱싱하여 Gulp 작업에서 이러한 매개 변수에 액세스 할 수 있습니다.
패키지를 사용하여 Gulp의 명령 줄 매개 변수를 처리 할 수 있습니까?
예, Yargs 또는 Minimist와 같은 패키지를 사용하여 Gulp에서 명령 줄 매개 변수를 처리 할 수 있습니다. 이 패키지는 명령 줄 매개 변수를 사용하기 쉬운 형식으로 구문 분석하므로 GULP 작업에 쉽게 사용할 수 있습니다. 예를 들어, Yargs를 사용하는 경우 <code class="language-bash">gulp doSomething --option1 "my string" --option2 123 --option3</code>
객체의 특성에 명령 줄 매개 변수로 액세스 할 수 있습니다.
Gulp 작업에서 플래그를 사용하는 방법은 무엇입니까?
플래그 이름 앞에서 플래그를 명령 줄에서 gulp 작업으로 전달할 수 있습니다. 예를 들어, 다음과 같이 "생산"플래그를 Gulp 작업에 전달할 수 있습니다. Gulp 작업 에서이 플래그가 또는 yargs 또는 미니스트와 같은 패키지를 사용하여 설정되어 있는지 확인할 수 있습니다. <code class="language-javascript">// 这是开发版本吗?
const devBuild = ((process.env.NODE_ENV || 'development').trim().toLowerCase() === 'development');
// Gulp 插件
const stripdebug = require('gulp-strip-debug'); // 删除调试代码
const uglify = require('gulp-uglify'); // 压缩
// 构建 JavaScript
gulp.task('js', () => {
let jsbuild = gulp.src('src/js/*')
.pipe(some-plugin1())
.pipe(some-plugin2());
// 生产服务器任务
if (!devBuild) {
jsbuild = jsbuild
.pipe(stripdebug())
.pipe(uglify());
}
return jsbuild.pipe(gulp.dest('build/js/'));
});</code>
여러 매개 변수를 GULP 작업에 전달할 수 있습니까?
예, 여러 매개 변수를 명령 줄에서 Gulp 작업에 전달할 수 있습니다. 이 매개 변수는 전달 된 순서대로
어레이에 추가됩니다. 배열을 인덱싱하여 Gulp 작업에서 이러한 매개 변수에 액세스 할 수 있습니다. process.argv
Gulp 작업에서 명령 줄 매개 변수를 사용하는 방법은 무엇입니까? process.argv
는 Yargs 또는 Minimist와 같은 배열 또는 패키지에 액세스하여 Gulp 작업에서 명령 줄 매개 변수를 사용할 수 있습니다. 이 매개 변수를 사용하여 GULP 작업의 동작을 제어 할 수 있습니다. 예를 들어, "생산"플래그를 사용하여 빌드 작업에서 코드를 압축 할 수 있습니다.
Gulp 작업에서 환경 변수를 사용할 수 있습니까?
예, Gulp 작업에서 환경 변수를 사용할 수 있습니다. 이러한 변수는
객체를 통해 액세스 할 수 있습니다. 이는 API 키와 같은 민감한 정보를 명령 줄 매개 변수에 노출하지 않고 GULP 작업에 전달하려는 경우 유용합니다.
GULP 작업의 오류를 처리하는 방법은 무엇입니까? process.argv
는 Gulp 작업의 오류를 처리하는 데 사용될 수 있습니다. 이 메소드는 오류가 발생할 때 호출되는 콜백 함수를 취합니다. 이 콜백 함수에서는 오류를 기록하고 GULP가 충돌하지 않도록 작업을 종료 할 수 있습니다.
순서대로 여러 Gulp 작업을 실행할 수 있습니까?
예, process.env
메소드를 사용하여 여러 Gulp 작업을 실행할 수 있습니다. 이 메소드는 다양한 작업 이름을 사용하여 정의 된 순서로 실행합니다.
여러 Gulp 작업을 병렬로 실행할 수 있습니까?
예,
메소드를 사용하여 여러 Gulp 작업을 병렬로 실행할 수 있습니다. 이 메소드는 다양한 작업 이름을 사용하고 동시에 모든 작업을 실행합니다.
기본 gulp 작업을 정의하는 방법은 무엇입니까? .on('error')
기본 gulp 작업은 "기본값"을 작업 이름으로 사용하는 메소드를 사용하여 정의 할 수 있습니다. 이 작업은 작업 이름없이 GULP 명령을 실행할 때 실행됩니다. 이 작업을 사용하여 기본적으로 일련의 다른 작업을 실행할 수 있습니다.
위 내용은 명령 줄 매개 변수를 GULP 작업에 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!