2017-04-24 1 views
0

그래서 webpack을 사용하는 프로젝트에서 일하고 있으며 내 package.json에서 dev와 production 모드를 모두 실행하는 스크립트를 만들고 싶습니다. 나는 windows 사용자이고 항상 Concurrently을 사용하여 동시에 여러 터미널 작업을 실행합니다.NODE_ENV 변수를 동시에 수정하지 않습니다.

나는이처럼 내 package.json 스크립트를 설정 : 그러니까 기본적으로 웹팩 제대로 작동

set NODE_ENV= exited with code 0 
Webpack is watching the files… 
... 

하지만 변수가되지 않는 :

"scripts": { 
    "start": "concurrently \"set NODE_ENV=\" \"webpack --watch\"", 
    "build": "concurrently \"set NODE_ENV=production\" \"webpack\"" 
}, 

터미널이의 출력은 생성/삭제됨. 두 명령 모두 실패합니다.

내가 직접

set NODE_ENV=production 

작동, 그래서 혼란 조금 해요 실행하면 ...

어떤 아이디어가?

고맙습니다.

+0

을 그것의 실패 :

npm install --save-dev cross-env 

및 package.json의 사용을 다음 위의 윈도우에서 작동하지 않는 경우

다음 cross-env 사용할 수 있습니까? 또한 환경 변수가 엄마 스크립트의 일부가 아닌 환경에 설정되어야한다고 주장 할 수 있습니다. 12factor.net을 읽으십시오. – Paul

+0

둘 다 실패하고 있습니다. 읽어 주셔서 감사 드리며, 바로 진행하겠습니다. – pegido

답변

1

변경 :

"start": "concurrently \"set NODE_ENV=\" \"webpack --watch\"", 
"build": "concurrently \"set NODE_ENV=production\" \"webpack\"" 

에 :

"start": "NODE_ENV= webpack --watch", 
"build": "NODE_ENV=production webpack" 

당신은 하나 개의 프로세스의 환경을 변경하고 다른 변경할 수 기대할 수 없다 병렬로 시작했다. 하위 프로세스의 env 만 변경할 수 있으며 시작시에만 변경할 수 있습니다. 자식 프로세스는 항상 부모로부터 환경을 상속받습니다. 구축하거나 시작, 어떤 명령

"start": "cross-env NODE_ENV= webpack --watch", 
"build": "cross-env NODE_ENV=production webpack" 
+0

Windows에서 Node를 아직 작성하지 않았습니다. 구문이 환경 변수를 설정합니까? – Paul

+0

@Paul 첫 번째 예제가 실패 할 경우를 대비하여 Windows 환경을 설정하기위한 업데이트 된 답변을 참조하십시오. – rsp

+0

@rsp 그게 그 작품 중 하나처럼 보입니다 ... 첫 번째 해결책은 환경을 설정하지 않고 두 번째는 (cross-env를 사용하여) env 변수를 설정하거나 webpack-을 실행하는 것을 전혀하지 않습니다. 어쨌든 시간을내어 주셔서 감사합니다. – pegido

관련 문제