自己的Node.js项目全局安装在自己的系统上

时间:2013-07-06 06:30:50

标签: javascript windows node.js npm

背景

我对Node.js很新,所以请不要讨厌..

我发现NPM非常有用,因为我可以全局安装Node.js包,然后像独立的可用路径应用程序一样使用它们。

这适用于Windows,这真让我感到惊讶。

例如,我通过npm install -g uglifyjs以这种方式安装了UglifyJS,现在我可以从我的系统中的任何位置通过uglifyjs <rest of command>(不是node uglifyjs ..或者其他)从控制台运行它。

我想创建自己的独立 Node.js应用程序。我如何得到排名?我在这里问,因为大多数教程只介绍如何编写一个简单的脚本,然后运行它node(我已经介绍过)


我当前的配置

的package.json

{
    "name": "hash",
    "version": "1.0.0",
    "author": "Kiel V.",
    "engines": [
        "node >= 0.8.0"
    ],
    "main": "hash.js",
    "dependencies": {
        "commander" : "1.2.0"
    },
    "scripts": {
        "start": "node hash.js"
    }
}

hash.js

var crypto = require('crypto'),
    commander = require('commander');

/* For use as a library */
function hash(algorithm, str) {
    return crypto.createHash(algorithm).update(str).digest('hex');
}
exports.hash = hash;


/* For use as a stand-alone app */
commander
    .version('1.0.0')
    .usage('[options] <plain ...>')
    .option('-a, --algorithm [algorithm]', 'Hash algorithm', 'md5')
    .parse(process.argv);

commander.args.forEach(function(plain){
    console.log( plain + ' -> ' + hash(commander.algorithm, plain) );
});

问题:

假设我在node-hash目录中只有这两个文件。如何安装此项目,以便稍后我可以通过cmd.exehash -a md5 plaintext中运行它,就像coffescript,jslint等安装一样?

1 个答案:

答案 0 :(得分:2)

您必须在package.json和hash.js中添加一些代码,然后运行此命令从本地文件夹安装软件包。

npm install -g ./node-hash

的package.json

{
    "name": "hash",
    "version": "1.0.0",
    "author": "Kiel V.",
    "engines": [
        "node >= 0.8.0"
    ],
    "bin": {
        "hash": "hash.js"
    },
    "main": "hash.js",
    "dependencies": {
        "commander" : "1.2.0"
    },
    "scripts": {
        "start": "node hash.js"
    }
}

hash.js

#!/usr/bin/env node

var crypto = require('crypto'),
    commander = require('commander');

/* For use as a library */
function hash(algorithm, str) {
    return crypto.createHash(algorithm).update(str).digest('hex');
}
exports.hash = hash;


/* For use as a stand-alone app */
commander
    .version('1.0.0')
    .usage('[options] <plain ...>')
    .option('-a, --algorithm [algorithm]', 'Hash algorithm', 'md5')
    .parse(process.argv);

commander.args.forEach(function(plain){
    console.log( plain + ' -> ' + hash(commander.algorithm, plain) );
});