[javascript] 자바 스크립트 : gulpfile.js에서 package.json 데이터 가져 오기

gulp 특정 질문은 아니지만 gulpfile.js 내의 package.json 파일에서 정보를 어떻게 얻을 수 있습니까? 예를 들어 홈페이지 나 이름을 가져 와서 작업에 사용하고 싶습니다.



답변

require('./package.json')감시 프로세스에 사용하지 마십시오 . 를 사용 require하면 첫 번째 요청의 결과로 모듈이 해결됩니다. 따라서 package.json을 편집하는 경우 해당 편집은 감시 프로세스를 중지하고 다시 시작하지 않는 한 작동하지 않습니다. gulp watch 프로세스의 경우 파일을 다시 읽고 작업이 실행될 때마다 파싱하므로 bitlinguist의 방법을 사용하는 것이 가장 좋습니다.

var fs = require('fs');

var json = JSON.parse(fs.readFileSync('./package.json'));


답변

이것은 꿀꺽 꿀꺽 거리는 소리가 아닙니다.

var p = require('./package.json')
p.homepage

최신 정보:

“require”는 읽기 결과를 캐시합니다. 즉, 요구할 수없고 파일에 쓴 다음 다시 요구하고 결과가 업데이트 될 것으로 기대할 수 없습니다.


답변

이것은 @Mangled Deutz의 좋은 솔루션입니다. 나 자신이 먼저 그것을했지만 작동하지 않았습니다 (곧 다시), 다음 해결책을 시도했습니다.

# Gulpfile.coffee
requireJSON = (file) ->
    fs = require "fs"
    JSON.parse fs.readFileSync file

이제 이것이 작동했지만 약간 장황하다는 것을 알 수 있습니다. require('./package.json')최상의 솔루션입니다.

-파일 이름 앞에 ‘./’를 추가하는 것을 잊지 마십시오. 나는 그것이 간단하다는 것을 알고 있지만, 작동하는 것과 작동하지 않는 것의 차이점입니다.


답변

npm run build “등을 사용하는 것과 같이 NPM에서 꿀꺽 꿀꺽 마시기를 트리거하는 경우

(이것은 NPM에 의한 gulp 실행 트리거에서만 작동합니다)

process.env.npm_package_ 객체

더 깊은 개체의 경우 밑줄로 구분해야합니다.

package.json에서 만든 구성 객체를 읽고 싶은 것처럼 package.json에서 특정 구성을 읽고 싶다면

scripts : {
   build: gulp
},
config : {
   isClient: false.
}

그런 다음 사용할 수 있습니다

process.env.npm_package_**config_isClient**


답변