如何使用--harmony标志运行gulp?

8

在node.js中,可以通过使用--harmony标志来实现相同的效果,例如:

node --harmony app.js

因此,它将支持EcmaScript6。

如何使用harmony标志运行gulp命令?


可能是[为什么“gulp-jest”失败并显示“请使用--harmony标志运行节点!”?]的重复问题(https://dev59.com/AIfca4cB1Zd3GeqPj4fI) - msanford
通常情况下,可以通过 gulp [gulp选项] -- --harmony 来实现这样的功能,其中 -- 后面的所有内容都应该传递给 Node.js。 - Robert Rossmann
3个回答

8

5
您可以按照以下方式进行操作:
alias gulp='node --harmony `which gulp`'

将以下内容放入~/.bashrc文件中,gulp将始终以和谐模式运行。
如果您是Docker用户并希望在容器内使用具有和谐功能的gulp,可以按照以下方式操作:
docker run -ti \
    --name container \
    nodejs-image-with-gulp-pre-installed \
    bash -ci 'gulp task'

关键是要在bash中使用-i标志,这样你的别名就能成功加载。否则,gulp将无法支持harmony而自行运行。

你不能仅仅以相同的方式命名别名,你尝试解析的命令(which gulp)已经被命名了。这应该会导致错误,因为which gulp将解析为gulp: aliased to node --harmony `which gulp` - naeramarth7
1
@naeramarth7 谢谢回复。是的,我也考虑过这个问题,但实际上即使使用别名,which gulp 仍然返回 gulp 二进制文件的实际路径。你可以自己验证一下,它就是有效的。 - FelikZ
OS X 10.10上的zsh中,事先检查过了,但不起作用(除了别名行上缺少引号之外)。给我一个错误:Error: Cannot find module '<path to current folder>/gulp',因为它尝试运行完全相同的命令:node --harmony gulp: aliased to node --harmony `which gulp` - naeramarth7
我使用的是GNOME终端3.6.2,在64位Linux Mint 17.1上,对于“gulp any-task”命令和原始的“gulp”命令,都没有出现问题。 - Andrew Faulkner

3

针对FelikZ的解决方案,以下是跟进:

npm run

您可以更新您的package.json文件,并在scripts部分添加您的gulp命令:

{
  "scripts": {
    "start": "node --harmony `which gulp` start",
    "build": "node --harmony `which gulp` build",
    ...
  }
}

然后可以使用 npm run start, npm run build 等命令来调用它们。

如果你想通过 npm 调用所有的 gulp 命令(而不是单独定义它们),可以按照以下步骤操作:

{
  "scripts": {
    "gulp": "node --harmony `which gulp`"
  }
}

要运行gulp start,你需要调用npm run --start等等。
备选方案:io.js
如果你想默认使用--harmony,可以看一下io.js: https://iojs.org/en/es6.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接