11

I'm wondering if there are any node framework or node lib out there that I can use to write a shell scripts? For example, I have bash shell program to install Graphite and OpenTSDB RRD tools, I would like to use node.js for it, is it possible?

Thanks

4

3 回答 3

11

看看shelljs——它实现了 shell 和 gnu coreutils 类的功能。与 coffeescript 一起,它看起来非常类似于 shell 脚本:

if not which 'git'
  echo 'Sorry, this script requires git'
  exit 1

# Copy files to release dir
mkdir '-p', 'out/Release'
cp '-R', 'stuff/*', 'out/Release'

# Replace macros in each .js file
cd 'lib'
for file in ls '*.js'
  sed '-i', 'BUILD_VERSION', 'v0.1.2', file
  sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file
  sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file
cd '..'

# Run external tool synchronously
if (exec 'git commit -am "Auto-commit"').code != 0
  echo 'Error: Git commit failed'
  exit 1
于 2013-10-18T02:09:50.987 回答
3

您应该查看grunt,它是一个帮助人们在 node.js 中编写构建和其他脚本的工具包。有很多插件可以帮助您轻松地做有趣的事情。

话虽如此,如果您了解 Bash,我会坚持使用 bash。

在 Twitter 上查看这个关于 Bash 与 Grunt 脚本的有趣线程

我用 Grunt 做什么

  • 运行 Lint 工具
  • 运行 JS 单元测试
  • 运行预处理器(sass、require.js、uglify 等)

我用 Capistrano 做*什么

  • 将代码部署到生产环境

我用 Bash**做什么

  • 设置服务器并运行它们等。

  • * capistrano + git 或chef或其他
  • **bash 或您想使用的任何其他工具
于 2013-10-17T18:02:21.770 回答
2

有很多,其中最受欢迎的是commander

npm install --save commander

然后编写命令非常简单:

#!/usr/bin/env node

var program = require('commander');

program
  .version('0.0.1')
  .option('-f, --foo', 'enable some foo')
  .option('-b, --bar', 'enable some bar')
  .option('-B, --baz', 'enable some baz');

program.on('--foo', function(){
  console.log('Stuff!');
});
于 2013-10-17T17:41:27.213 回答