nodejs直接呼叫grunt(非呼叫批處理)

2022-03-25 13:20:12 字數 1461 閱讀 2970

在windows下,我們做js構建工作,都習慣安裝grunt-cli,只需要命令列grunt。。。一切構建工作都自動完成了。這已經是很完美的情況了,不過最近要做乙個伺服器版的自動化構建系統,在nodejs中呼叫批處理執行grunt就顯得很矬,而且各種問題。是否有更好,更漂亮的方式呢?

grunt本來就是nodejs程式,安裝後表現為乙個node_module,那麼cli是什麼呢?這只是乙個nodejs寫的命令列介面。所以,nodejs肯定可以直接在js層面呼叫grunt。

我們需要做的,只需要揭開cli的面紗。

首先,看看cli安裝後的位置:

(win7)

cli主要**是一堆引數判斷處理,但最終實際關鍵點是grunt.cli( )

#!/usr/bin/env node

'use strict';

process.title = 'grunt';

//especially badass external libs.

var findup = require('findup-sync');

var resolve = require('resolve').sync;

//internal libs.

var options = require('../lib/cli').options;

var completion = require('../lib/completion');

var info = require('../lib/info');

var path = require('path');

var basedir =process.cwd();

vargruntpath;

//do stuff based on cli options.

if ('completion' in

options)

else

if(options.version)

else

if (options.base && !options.gruntfile)

else

if(options.gruntfile)

try);

} catch

(ex)

if(options.help)

info.fatal('unable to find local grunt.', 99);

}}//everything looks good. require local grunt and run it.

require(gruntpath).cli();

那麼我們回到自己的nodejs專案中,先安裝好grunt模組,然後在js**中輕輕寫上兩句:

var grunt = require('grunt');

console.log(grunt.cli);

grunt.cli(,而是乙份引數說明!!!不得不佩服作者的用心良苦。

nodejs呼叫c dll感想

這幾天折騰了幾天終於搞定了,nodejs呼叫c dll的問題,回想起來有一下幾個難點 1 函式引數,型別如下 unsigned short arg0 args 0 uint32value 其他整數型別類似 args 0 tostring string newfromutf8 isolate,data...

nodejs呼叫SendCloud郵件API2 0

sendcloud作為專業的第三方郵件傳送服務提供商,具有高效和穩定的特點,很好地滿足平時業務中的相關需求。前一陣在使用時發現原有的郵件api介面公升級到2.0了,對於普通傳送功能而言,主要的區別在於傳遞的引數從body引數變成了query引數,由於sendcloud官網還未給出nodejs版本的示...

performSelector與直接呼叫的區別

performselector與直接呼叫的區別 1 直接呼叫 delegate image self didfinishwithimage image 2 使用 performselector呼叫 delegate performselector selector image didfinishwi...