Articles of npm

为什么运行我的全局npm链接包只需打开bin文件?

如果我正在开发npm包foo并且希望将其作为命令行应用程序全局安装,那么只需将其添加到我的package.json即可: "bin": { "foo": "./bin/foo.js" } 有人通过npm全局安装我的软件包,将有相应的batch file和shell脚本添加到他们的全局npm前缀目录中。 不过,假设我希望能够从shell启动我的包(或者在Windows的情况下,命令提示符)。 我可以通过在我的PATH目录之一中创build一个batch file/ shell脚本,直接运行我的软件包,例如@node C:\my\package\directory\bin\foo %* 。 这是一个相当简单明显的解决scheme,但我觉得npm link更适合,因为它感觉不那么乱,理论上是为了做这件事情而devise的。 我在我的软件包目录中运行npm link ,然后通过从命令行运行foo来testing它。 然而,不是执行我的脚本, foo.js实际上是在我的默认编辑器中打开的。 在前缀目录中调查,发现foo.cmd文件( foo shell脚本的内容类似)包含: "%~dp0\node_modules\foo\bin\foo.js" %* 与由npm install -g创build的batch file比较: @IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\node_modules\npm\bin\npm-cli.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node "%~dp0\node_modules\npm\bin\npm-cli.js" %* ) 为什么npm link生成脚本文件来启动一个包的bin文件,而不是以bin文件作为参数启动节点呢? 我该如何解决这个问题?

NPM不工作(无法find模块'内部/ FS' – nodejs)

NPM错误更新。 我最近更新到节点版本7.x。 现在npm不工作。 我无法find错误,这可能是由于 – npm ERR! Cannot find module 'internal/fs' npm ERR! Cannot find module 'internal/fs' 。 当我运行sudo npm update -g时,我得到以下内容 – npm ERR! Linux 3.13.0-101-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "update" "-g" npm ERR! node v7.1.0 npm ERR! npm v3.10.8 npm ERR! code MODULE_NOT_FOUND npm ERR! Cannot find module 'internal/fs' npm ERR! npm […]

哪个npm / bin文件夹应该在PATH中? (OS X 10.8.2 / npm安装了自制软件)

使用自制程序升级节点 ==> Downloading http://nodejs.org/dist/v0.8.21/node-v0.8.21.tar.gz ######################################################################## 100.0% ==> ./configure –prefix=/usr/local/Cellar/node/0.8.21 ==> make install 我注意到了这一点 ==> Caveats Homebrew installed npm. We recommend prepending the following path to your PATH environment variable to have npm-installed binaries picked up: /usr/local/share/npm/bin 在$PATH我已经: /usr/local/share/npm/lib/node_modules/scripted/bin我应该添加/usr/local/share/npm/bin吗? 请注意, /usr/local/share/npm/bin只包含两个子文件夹: scr和scripted ,它们也位于/usr/local/share/npm/lib/node_modules/scripted/bin 中 ,这些目的有什么区别两个文件夹? 编辑 /usr/local/share/npm/bin只包含两个符号链接(不是子文件夹)

nodejs npm package | npm链接问题

我试图做一个npm包(插件)通过节点安装小JS框架,已经拿出所需的package.json。 在Macterminal上运行npm link命令后,看到以下错误。 npm ERR! Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate' npm ERR! { [Error: EACCES, symlink '/Repos/GIT/JavaScript-Boilerplate'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/Repos/GIT/JavaScript-Boilerplate' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Darwin 12.3.0 npm ERR! command "node" "/usr/local/bin/npm" "link" npm ERR! cwd […]

在ubuntu上安装topojson时遇到困难

我一直试图按照Mike Bostock的“让我们制作一个地图”教程http://bost.ocks.org/mike/map/来安装topojson,我相信我已经成功地获得了最新版本的Node.js和npm。 $哪个ogr2ogr的作品。 我对编程和Ubuntu相当陌生,并衷心感谢一些彻底的帮助,为什么npm install topojson -g会产生以下错误。 当我用sudo尝试相同的命令时,会产生如下错误:npm ERR! registry错误parsingjson和gyp ERR! 堆栈错误:无法安装“pre”版本的节点,请改用–nodedir标志 谢谢! npm ERR! Error: EACCES, open '/home/natecraft/.npm/7edf76d6-topojson.lock' npm ERR! { [Error: EACCES, open '/home/natecraft/.npm/7edf76d6-topojson.lock'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/home/natecraft/.npm/7edf76d6-topojson.lock' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Linux […]

TFS生成找不到Grunt

我在我们的TFS构build服务器上安装了npm和grunt。 我使用npm install -g grunt-cli安装了grunt-cli ,然后能够在以我自己的身份login时从命令行运行grunt deploy 。 出TFS生成作为tfsservice用户虽然运行,当它试图做的grunt部署它会得到一个错误消息: 'grunt' is not recognized as an internal or external command, operable program or batch file. 所以,当我自己在构build服务器上login时,如果我运行命令提示符作为tfsservice我得到相同的错误。 所以我尝试从该命令提示符下执行npm install -g grunt-cli ,它看起来已经正确安装并在C:\ Users \ tfsservice \ AppData \ Roaming \ npm中创build了grunt文件,但是仍然得到相同的错误运行grunt部署时 。 所以它看起来像grunt-cli没有得到安装tfsservice ? 当我得到tfsservice%homepath%时,我发现它被设置为\ Windows \ system32 ,而不是预期的\ Users \ tfsservice ; 也许这是一个服务帐户有什么关系呢? 我发现类似的问题已经被要求在Team City中使用grunt-cli ,但是它build议使用Team […]

如何使用cheerio获取脚本内容

我正在使用cheerio库,并试图让这个脚本字段 – script type="application/json"但由于某种原因,它无法find这些脚本标签。 哪里不对? 我该如何解决? var $ = require('cheerio') var parsedHTML = $.load(html) console.log( parsedHTML('script').get().length ); // this is 0

只能从Travis发送数据给Coveralls,而不是在本地testing

我有一个应用程序( https://github.com/idmillington/dendry )使用Travis CI来监视构build状态。 我使用伊斯坦布尔来提供一个覆盖报告,我想把这个发给Coveralls,为README生成一个覆盖button。 所有这一切,我可以工作。 但… 当我在本地运行npm test ,我不想发送工作服的覆盖数据。 我通常每次提交运行npm test几十次。 但是当我推,特拉维斯做它的事情,我想特拉维斯更新我的报道。 我可以在我的package.json中有这样的东西: "scripts": { "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha", } 这对本地来说是很好的,而且不会更新工作服,但是Travis也不会更新工作服。 或者我可以这样做: "scripts": { "test": "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha && ./node_modules/coveralls/bin/coveralls.js < ./coverage/lcov.info", } 这对于Travis来说是完美的,但是每次我在本地运行npm test都会尝试将数据推送到Coveralls。 据我所知,我不能要求特拉维斯运行npm test以外的东西。 我不想问任何潜在的用户或贡献者记得testing使用 $ npm run-script test-local 或者一些这样的,尤其是运行npm test会产生一个上传错误,没有正确的私钥工作服。 有没有办法在这里得到正确的行为?

Docker + Nodejs + Private Repo + Private NPM模块 – 访问问题

我正在使用Docker设置Node.js服务的部署。 我所拥有的Dockerfile是从网上的各种示例拼凑而成的。 Dockerfile的目录包括: Dockerfile id_rsa start.sh 这是Dockerfile: FROM ubuntu:13.10 # make sure apt is up to date RUN apt-get update # install npm, git, ssh, curl RUN apt-get install -y npm git git-core ssh curl RUN mkdir /nodejs && curl http://nodejs.org/dist/v0.10.31/node-v0.10.31-linux-x64.tar.gz | tar xvzf – -C /nodejs –strip-components=1 # Fixes empty home ENV PATH $PATH:/nodejs/bin […]

凉亭和咕噜声全球或本地?

我们有nvm不要在全球范围内安装任何东西,因为我们可能同时在许多不同的项目上工作,需要同一个库的不同版本。 但是,凉亭和咕噜声呢? 在互联网上的任何地方,我npm install -g bower看到npm install -g bower我知道前段时间的咕噜声已经分解成了让全局包更加稳定的咕噜声和咕噜声。 但是,凉亭呢? 使用这些软件包的最佳做法是什么? 如何避免潜在的版本冲突? 或者,也许我夸大了这个问题,我应该简单地使用-g选项?