1

如何让 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() 之后执行它?

4

2 回答 2

0

节点 js fs 工具

如果你只是想删除文件和文件夹,那么 Node.js 有文件系统工具可以为你做到这一点:

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);
于 2015-03-25T23:40:00.097 回答
0

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

于 2015-12-29T05:34:22.893 回答