如何让npm包bin运行实验模块选项?

时间:2018-01-31 07:39:24

标签: javascript node.js npm package.json es6-modules

从Node v8.5.0开始,支持ES6样式模块

import x from 'x'
通过使用选项--experimental-modules运行节点可以使用

,如下所示:

node --experimental-modules test.mjs

使用bin中的package.json密钥,您可以通过运行npm link轻松创建cli工具npm cli

不幸的是,以这种方式运行时,调用节点时没有可选的--experimental-modules标志。

如何将bin模块与--experimental-modules一起使用?

这是一个例子

仓/ healthcheck.mjs

import { connect } from 'amqplib'

let open = connect(process.env.RABBITMQ_URL);

const exit = ({healthy = true}) => {
  return healthy ? process.exit(0) : process.exit(1)
}

open.then(() => {
  exit({healthy: true})
}).catch((e) => {
  exit({healthy: false})
})

的package.json

{
  "name": "my-cli",
  "bin": {
    "healthcheck": "./bin/healthcheck.mjs"
  }
}

运行...

> npm link
> healthcheck
/usr/local/bin/healthcheck: line 1: import: command not found
/usr/local/bin/healthcheck: line 3: syntax error near unexpected token `('
/usr/local/bin/healthcheck: line 3: `let open = connect(process.env.RABBITMQ_URL);'

1 个答案:

答案 0 :(得分:6)

您可以在脚本顶部使用shebang

#!/bin/sh 
":" //# comment; exec /usr/bin/env node --experimental-modules "$0" "$@"

此处有更多详情:http://sambal.org/2014/02/passing-options-node-shebang-line/