如何在 metalsmith 中运行 bash 脚本

Posted

技术标签:

【中文标题】如何在 metalsmith 中运行 bash 脚本【英文标题】:How do you run a bash script in metalsmith 【发布时间】:2015-05-24 19:05:11 【问题描述】:

如何让 metalsmith 运行 bash 脚本?你能做到吗?

我的 build.js 非常简单,但我想在编译完所有内容后从 build 文件夹中删除一些内容。

var Metalsmith = require('metalsmith'),
    copy       = require('metalsmith-copy'),
    define     = require('metalsmith-define'),
    markdown   = require('metalsmith-markdown'),
    permalinks = require('metalsmith-permalinks'),
    static     = require('metalsmith-static'),
    templates  = require('metalsmith-templates');



Metalsmith(__dirname)
    .source('./pages')
    .use(static(require('./config/assets')))
    .use(static(require('./config/rootFiles')))
    .use(define(require('./config/define')))
    .use(markdown())
    .use(permalinks())
    .use(templates(require('./config/templates')))
    .destination('./build')
    .build(function (err) 
        if (err) 
          throw err
        
    )

如果我在 config/cleanup.sh 中保留一个 bash 脚本,我该如何在 .build() 之后执行它?

【问题讨论】:

是否有理由在 Node.js 文件 IO 上使用 bash 脚本? 只是我是node的新手,我不知道如何使用node.js文件IO。我只是想删除构建中的几个文件夹。感谢您的回复詹姆斯 尽管我不喜欢不直接回答您的问题,但我真的认为这可能是一种更好的方法。如果您找到解决方法,您可以回来发布答案吗? 通常我建议你需要自己做研究:***.com/questions/5315138/node-js-remove-file 我认为rimraf 将是最简单的解决方案。当您想从节点脚本触发操作时,从 shell 执行此操作需要更多工作,rimraf(和 fs)可以为您执行此操作。 【参考方案1】:

Node js fs 工具

如果您只是想删除文件和文件夹,那么 Node.js 有 filesystem 工具可以帮您完成:

var fs = require('fs');

// file
fs.unlink('/path/to/filename.txt', callback);
// directory
fs.rmdir('/path/to/dirname', callback);

执行 bash 脚本(或其他命令)

如果您真的想运行 bash 脚本,那么 child_process.exec 可能会帮助您。 (示例来自:http://www.dzone.com/snippets/execute-unix-command-nodejs)

var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr)  sys.puts(stdout) 

exec('./bash_script.sh', puts);

【讨论】:

【参考方案2】:

您可以使用 https://github.com/pjeby/gulpsmith 并使用另一个 gulp 插件(例如 https://www.npmjs.com/package/gulp-clean)来删除您的文件。

【讨论】:

以上是关于如何在 metalsmith 中运行 bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何在UITableView的页脚标题中使用换行符?

如何在路径有空格的另一个 bash 脚本中运行 bash 脚本?

如何在java中运行异步bash命令?

如何在 Windows 的 git bash 中运行“make”命令?

如何检查是不是在 bash 脚本中以 root 身份运行

如何在 Alpine Docker 容器中运行 Bash 脚本?