ShellJS 用于 Node.js 的 Unix shell 命令
ShellJS 是一个基于 Node.js API 的 Unix shell 命令的可移植(Windows/Linux/OS X)实现。您可以使用它来消除 shell 脚本对 Unix 的依赖,同时仍然保留其熟悉且功能强大的命令。您还可以全局安装它,这样您就可以从 Node 外部项目运行它了——与那些粗糙的 Bash 脚本说再见吧!
从 v6 开始,ShellJS 自豪地在每个 node 版本上都得到了测试。
该项目经过 单元测试,并在以下项目中经过实战测试:
- Firebug -- Firefox的调试器
- JSHint & ESLint -- 流行的 JavaScript linter
- Zepto - 适用于现代浏览器的jQuery兼容JavaScript库
- Yeoman - Web应用程序堆栈和开发工具
- Deployd.com - 用于快速 API 后端生成的开源 PaaS
- 以及更多。
如果您有反馈意见、建议或需要帮助,请随时在我们的问题跟踪器中发帖。
认为 ShellJS 很酷?在我们的 Wiki 页面 查看一些相关项目!
从旧版本升级? 查看我们的重大更改页面,了解升级时需要注意的更改。
命令行使用
如果您只是想要跨平台的 UNIX 命令,请签出我们的新项目 shelljs/shx ,这是一个向命令行公开 shelljs 的实用程序。
$ shx mkdir -p foo $ shx touch foo/bar.txt $ shx rm -rf foo
插件 API
ShellJS 现在支持第三方插件!您可以在 wiki 中 了解关于使用插件和编写自己的ShellJS命令的更多信息。
关于文档的简要说明
有关所有最新功能的文档,请查看我们的自述文件。要阅读与最新版本一致的文档,请查看 npm 页面或 shelljs.org 。
安装
通过 npm:
$ npm install [-g] shelljs
实例
var shell = require('shelljs'); if (!shell.which('git')) { shell.echo('Sorry, this script requires git'); shell.exit(1); } // Copy files to release dir shell.rm('-rf', 'out/Release'); shell.cp('-R', 'stuff/', 'out/Release'); // Replace macros in each .js file shell.cd('lib'); shell.ls('*.js').forEach(function (file) { shell.sed('-i', 'BUILD_VERSION', 'v0.1.2', file); shell.sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file); shell.sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, shell.cat('macro.js'), file); }); shell.cd('..'); // Run external tool synchronously if (shell.exec('git commit -am "Auto-commit"').code !== 0) { shell.echo('Error: Git commit failed'); shell.exit(1); }
排除选项
如果你需要传递一个看起来像一个选项的参数,你可以这样做:
shell.grep('--', '-v', 'path/to/file'); // Search for "-v", no grep options shell.cp('-R', '-dir', 'outdir'); // If already using an option, you're done
全局与局部(Global vs. Local)
我们不再推荐使用 ShellJS 的全局导入(即 require('shelljs/global'))。虽然仍然支持这种便利,但这会污染全局命名空间,因此只应谨慎使用。
相反,我们推荐本地导入(npm 包的标准):
var shell = require('shelljs'); shell.echo('hello world');
命令参考
除非另有说明,否则所有命令都会同步运行。 所有命令都接受标准的bash globbing字符(* ,? 等),与 node glob 模块兼容。
有关命令和功能,请查看我们的wiki 页面。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论