이 문제에 대한 좋은 해결책을 스스로 찾을 수 없다는 것이 조금 부끄럽지만 아쉽습니다.
npm을 사용하면 일반적으로 툴체인이 정기적으로 실행하기를 원하는 작업을 저장하기 위한 세그먼트가 있는 package.json
파일이 있습니다. 예:scripts
"scripts": {
"build": "webpack --env production",
"start": "webpack-dev-server"
}
이제 우리는 툴체인의 일부(이 예제 webpack)를 업데이트했을 수 있으며 갑자기 다음과 같은 메시지를 받게 됩니다.
(node:10868) [DEP_WEBPACK_DEPRECATION_ARRAY_TO_SET] DeprecationWarning: Compilation.modules was changed from Array to Set (using Array method 'reduce' is deprecated)
(Use `node --trace-deprecation ...` to show where the warning was created)
있는 그대로는 문제를 진단하고 해결하는 데 전혀 쓸모가 없습니다. 일부 빌드 스크립트 어딘가에 문제가 있습니다. ... 예!
최소한 webpack과 해당 플러그인의 경우 CLI에서 호출하면 매우 유용한 추적 출력을 얻을 수 있습니다.
node --trace-deprecation node_modules/webpack/bin/webpack.js --env production
꽤 번거로운 줄이지 않나요? 우리가 정말로 이것을 피하고 싶은 데에는 수많은 이유가 있습니다. 특별한 순서는 없습니다:
- 특히 지원 중단은 색상으로 구분된 메시지의 바다에서 색상이 없는 단일 선입니다. 쉽게 놓칠 수 있습니다.
- 우리는 프로젝트를 빌드해야 해다시지원 중단을 확인한 후
- 스크립트에서는 원하는 빌드 도구의 이름을 사용하기만 하면 됩니다. 여기서는 전체 상대 경로를 제공해야 합니다.
- 우리는 원하는 매개변수를 CLI에 복사해야 합니다.
package.json
(예: 다른 환경이 다른 플러그인을 활성화하는 경우 - 일반적인 사용 사례가 아니므로 프로그래머가 이미 지원 중단을 처리할 아이디어를 얻었을 때에도 쉽게 간과됩니다.)- 추가로 인해
.js
전체 스크립트 본문을 복사할 수도 없습니다.
- 추가로 인해
- 순수하고 순수한 게으름
그래서...
- 부분
--trace-deprecation
에서 활성화할 수 있는 방법이 있나요 ?scripts
package.json
- 그렇지 않은 경우 대체 빌드 스크립트 소스를 사용하는 방법이 있습니까?nps?
... 제 생각에는 항상 노드 호출을 별도의 배치 파일에 넣을 수 있지만 모든 빌드 스크립트를 관리하는 데는 단일 위치를 사용하는 것이 더 나을 것입니다.
의도된 사용 사례:
로컬로 빌드할 때 그리고 아마도 일부 CI 분기에서 빌드할 때 이 옵션이 항상 켜져 있으면 전체 추적을 로그에 바로 출력하고 단계를 불안정한 것으로 표시할 수 있기를 바랍니다. 전용 npm 스크립트 "build:trace" 또는 이와 유사한 스크립트를 사용하는 것이 간단한 해결책인 것 같습니다.만약에그것은 할 수 있습니다.
답변1
그렇습니다. 많은 노드 CLI 플래그를 명령에 인라인할 수 있는 환경 변수로 전달할 수 있습니다 scripts
. 예를 들어:
"build": "NODE_OPTIONS='--trace-deprecation' webpack",
플래그가 지원되는 문서는 다음을 참조하세요.https://nodejs.org/api/cli.html#node_optionsoptions
또한 이와 같은 환경 변수를 앞에 추가하는 것만으로는 Windows에서 작동하지 않습니다. 귀하의 분야에서 크로스 플랫폼 환경 변수를 원한다면 scripts
제가 아는 최고의 솔루션은 다음과 같습니다.교차 환경.