ShellJS 用于 Node.js 的 Unix shell 命令

发布于 2020-08-26 20:04:40 字数 3177 浏览 1780 评论 0

ShellJS 是一个基于 Node.js API 的 Unix shell 命令的可移植(Windows/Linux/OS X)实现。您可以使用它来消除 shell 脚本对 Unix 的依赖,同时仍然保留其熟悉且功能强大的命令。您还可以全局安装它,这样您就可以从 Node 外部项目运行它了——与那些粗糙的 Bash 脚本说再见吧!

从 v6 开始,ShellJS 自豪地在每个 node 版本上都得到了测试。

该项目经过 单元测试,并在以下项目中经过实战测试:

如果您有反馈意见、建议或需要帮助,请随时在我们的问题跟踪器中发帖

认为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

沧笙踏歌

文章 0 评论 0

山田美奈子

文章 0 评论 0

佚名

文章 0 评论 0

岁月无声

文章 0 评论 0

暗藏城府

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文