npm全局安装未使用节点

曼努埃尔

我正在尝试创建一个可以在全球范围内安装的软件包。我的package.json有:

{
  "name": "my-new-package",
  "version": "1.0.0",
  "main": "index.js",
  "preferGlobal": true,
  "bin": {
    "my-new-package": "index.js"
  }
}

我可以使用“ node index.js”运行它,并将其发布到npm。

问题是,当我npm i -g my-new-package在Windows上全局安装它时,文件my-new-package.cmd为:

@"%~dp0\node_modules\my-new-package\index.js" %*

因此,当我执行my-new-package,将使用默认编辑器打开javascript文件。

相反,其他全局包使用node.exe这是cute-files.cmd示例:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\node_modules\cute-files\cute-files.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\node_modules\cute-files\cute-files.js" %*

顺便说一句,当我在Linux上安装它时,会得到相同的行为。

那么,如何在全局安装节点的情况下配置我的软件包以使用节点呢?

斯科特·斯滕斯兰德

这是创建全局可执行的nodejs包的方法

mkdir my-new-package
cd my-new-package

首先创建 cat package.json

{
  "name": "my-new-package",
  "version": "1.0.0",
  "description": "global module my-new-package",
  "main": "./lib/index.js",
  "bin": {
    "my-executable-name": "./bin/test-module.js"
  },
  "author": "",
  "license": "ISC",
    "preferGlobal": "true"
}

现在将这两个dirs作为dir的子代 my-new-package

mkdir bin
mkdir lib

这是我们需要的另一个文件 cat lib/index.js

var sayHello = function(name) {
 return 'Hello, ' + name;
};

// Allows us to call this function from outside of the library file
// Without this, the function would be private to this file

exports.sayHello = sayHello;

现在创建一个文件 cat bin/test-module.js

#!/usr/bin/env node

var lib= require('../lib/index.js');
var greeting = lib.sayHello('hello everyone');

console.log(greeting);

现在进入my-new-package文件所在的目录package.json并发出全局安装命令

cd my-new-package

npm install -g .

注意上述安装命令中的句点

它的输出将是这样的

/home/stens/node-v6.5.0/bin/my-new-package -> /home/stens/node-v6.5.0/lib/node_modules/my-new-package/bin/test-module.js
/home/stens/node-v6.5.0/lib
└── [email protected] 

现在它已全局安装,您可以在任何目录中发布它

my-executable-name

它将以

Hello, hello everyone

有趣的是,我们的新可执行文件按以下方式位于nodejs全局bin目录中:

which my-executable-name

回应

/home/stens/node-v6.5.0/bin/my-executable-name

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

全局安装的 npm-package 未运行

来自分类Dev

安装 npm(节点已安装,npm 未安装)

来自分类Dev

全局安装npm模块...然后节点无法找到它

来自分类Dev

全局安装的节点模块

来自分类Dev

全局安装npm

来自分类Dev

npm使用节点5.0.0和npm 3.5.1安装bcrypt

来自分类Dev

如何使用nvm在节点安装之间复制全局模块?

来自分类Dev

NPM节点安装失败

来自分类Dev

节点安装npm模块

来自分类Dev

如何全局安装节点模块?

来自分类Dev

通过npm全局安装的cli节点/咖啡应用程序出现语法错误

来自分类Dev

使用OSX El Capitan安装节点5.0.0之后的npm mulfunction

来自分类Dev

使用 npm 安装节点失败,出现 EACCES 错误

来自分类Dev

本地安装与全局安装的NPM模块

来自分类Dev

尝试使用npm时未安装bcrypt我bcrypt

来自分类Dev

全局或本地节点安装软件包

来自分类Dev

无法运行全局安装的节点模块

来自分类Dev

无法运行全局安装的节点模块

来自分类Dev

已安装节点,但未安装NPM

来自分类Dev

节点已安装,但节点和 NPM 均无法通过命令行使用

来自分类Dev

OSX上的NPM全局安装位置

来自分类Dev

npm没有正确安装全局模块

来自分类Dev

运行全局安装的npm软件包

来自分类Dev

npm不能正确安装全局模块

来自分类Dev

NPM Express模块未安装

来自分类Dev

Travis未安装npm模块

来自分类Dev

Node.js + npm,我应该使用全局还是本地模块安装?

来自分类Dev

Mac OS X Mavericks更新后,无法使用npm进行全局安装

来自分类Dev

Debian - Nodejs 已安装,但 npm 未安装