sh:意外令牌附近的语法错误`}'

时间:2014-12-31 19:15:43

标签: node.js sh

我觉得这是一个真正的白痴发布语法错误问题,但我真的不知道如何解决这个问题

我尝试使用以下脚本在我的节点package.json文件中设置构建过程

"scripts": {
  "build": "NODE_ENV=production { echo '// mypkg-x.y.z'; browserify -r ./client/main.js:mypkg | uglifyjs -cm; } > dist/mypkg.min.js"
}

在sh

中运行以下内容
NODE_ENV=production { echo '// mypkg-0.0.0'; browserify -r ./client/main.js:mypkg | uglifyjs -cm; } > dist/mypkg.min.js

sh错误输出

sh: -c: line 0: syntax error near unexpected token `}'

当我在bash中运行命令时,它运行正常,但nodejs使用sh:{


结束目标

我正在浏览一些javascript代码,我想在捆绑的输出前加上包的名称/版本

// mypkg-x.y.z
<bundle output here>

2 个答案:

答案 0 :(得分:1)

设置NODE_ENV后添加分号:

"build": "NODE_ENV=production; { echo '// mypkg-x.y.z'; browserify -r ./client/main.js:mypkg | uglifyjs -cm; } > dist/mypkg.min.js"

答案 1 :(得分:0)

@ Ray的回答很有效,我只是想为同一个问题发布一个替代解决方案

// this works too !
{ echo '// mypkg-0.0.0'; NODE_ENV=production browserify -r ./client/main.js:mypkg | uglifyjs -cm; } > dist/mypkg.min.js

为突出显示差异,我所做的只是将NODE_ENV=production位移到browserify位之前。在这种情况下,不需要分号。

这实际上对我的用例有点特别,因为环境变量只需要构建过程的那一部分。