当前位置:嗨网首页>书籍在线阅读

11-创建一个命名行工具

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.5 创建一个命名行工具

在UNIX环境中,我们可以很简单地创建一个能直接运行的Node程序,无须使用node命令。

**Windows命令行工具** 要创建Windows命令行工具,你需要创建一个批处理文件,该文件除了应用程序本身,还要有调用Node的部分。

我会用第3章中讲到的Commander模块来进行演示,同时用一个子进程来访问ImageMagick,它是一个功能强大的图像工具。

**子进程** 子进程会在第8章中介绍。

在我的应用中,我会用ImageMagick为一个已有的图片文件加上偏光效果,然后把结果存入另一个文件。如例6-4所示,我用Commander来处理命令行参数,同时为这个工具提供帮助信息。

例6-4 Node成为命令行工具

#!/usr/bin/env node
var spawn = require('child_process').spawn;
var program = require('commander');
program
   .version ('0.0.1')
   .option ('-s, --source [file name]', 'Source graphic file name')
   .option ('-f, --file [file name]', 'Resulting file name')
   .parse(process.argv);
if ((program.source === undefined) || (program.file === undefined)) {
   console.error('source and file must be provided');
   process.exit();
} 
var photo = program.source;
var file = program.file;
// conversion array
var opts = [
photo,
"-bordercolor", "snow",
"-border", "20",
"-background","gray60",
"-background", "none",
"-rotate", "6",
"-background", "black",
"(", "+clone", "-shadow", "60x8+8+8", ")",
"+swap",
"-background", "none",
"-thumbnail", "240x240",
"-flatten",
file];
var im = spawn('convert', opts);
im.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
}); 
im.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

要把它转换成命令行工具,需要在文件顶部加入下面的代码:

#!/usr/bin/env node

字符“#!”也被称为shebang。接下来是用来执行这个文件的程序,在本例中是Node。子目录则是应用程序所在的路径。

保存文件时不需要.js后缀。下面我们用 chmod 命令将其转换成可执行文件:

chmod a+x polaroid

现在可以运行这个工具程序了:

./polaroid –h

运行上面的命令可以获取帮助(得益于Commander模块),而下面的命令:

./polaroid -s phoenix5a.png -f phoenix5apolaroid.png

则是用来创建一个具有偏光效果的新图片。虽然这个工具不能在Windows上使用,但如果在它能使用的环境中,它都能很好地工作。

创建一个命令行工具和创建一个独立的应用程序不同。后者意味着在安装应用程序时不需要安装Node(或者其他依赖)。

**用NW.js创建一个独立的应用程序** 到目前为止,我所知道的唯一一个可以创建独立应用程序的是英特尔公司的NW.js(正式的名字是node-webkit)。你可以用它打包文件,然后用NW.js来运行,NW.js正是能让这一切工作的核心所在。