Articles of npm

如何在安装新的nodejs依赖关系之前运行脚本

我尝试使用预安装npm脚本,但只有在将项目签出到新空间时才运行,并单独运行“npm i” 我需要一个解决scheme来在新的依赖关系写入package.json 之前运行一个脚本。 它不依赖于依赖types:dev或prod。 他们都需要检查。 例如,当一个新的开发者join到团队中,并且想要添加已知漏洞的新依赖时,这个脚本在package.json被修改之前停止这个动作,并且向开发者显示警告消息

NPM保持有问题查找我的节点path

下面是我试图安装Node-Proxy的例子,因为NowJS需要它: sudo npm安装节点代理 > node-proxy@0.5.2 install /home/jennifer/node_modules/node-proxy > make BUILDING: C++ Component Checking for program g++ or c++ : /usr/bin/g++ Checking for program cpp : /usr/bin/cpp Checking for program ar : /usr/bin/ar Checking for program ranlib : /usr/bin/ranlib Checking for g++ : ok Checking for node path : not found Checking for node prefix : […]

package.json适用于不同的环境?

我有一个node.js应用程序,我刚刚部署到Heroku取决于canvas模块。 但是,该模块需要开罗graphics库和长话短说,我需要使用一个precomipiled版本,这是包含在这个canvas的叉子 。 通常,我的package.json依赖关系如下所示: "dependencies" : { "canvas" : "0.10.0", "express" : "2.5.6", "jade" : "0.20.1" } 但为了让我的应用程序在Heroku上工作,我必须从github中取出叉子 "dependencies" : { "canvas" : "git://github.com/elspoono/node-canvas-heroku.git#master", "express" : "2.5.6", "jade" : "0.20.1" } 是否可以有一个“Heroku-only”版本的package.json? 还是有package.json中的另一个部分,我可以“覆盖”开发环境中的canvas依赖项?

npm为JavaScript客户端代码

我正在阅读有关npm开发人员指南的文档。 我想知道是否有可能使用npm编写一个使用javascript / css / html的networking客户端应用程序? 如果是的话,github上有一些例子吗? 例如,我的客户端Web应用程序依赖于requirejs, jquery, underscore and backbone 。 我可以使用npm自动下载供应商目录中的最新版本的requirejs, jquery, underscore and backbone吗? 如果不是,还有其他的工具/方法来达到这个目标吗?

集中式的node_modules

我想我的节点模块存储在一个集中的地方,比如/var/http/common/ ,让我的应用在不同的位置运行/运行,比如/var/http/www/apps/APP#1_NAME/ 。 我能够在server.js设置require('../../../common/express')来使用像require('../../../common/express')这样的相对path,但是从NPM的作者的阅读post来看,这听起来像是黑客攻击它,我应该使用npm link创build一个“本地”参考节点(这符号链接到真正的安装)。 我首先在/var/http/common/安装了我的节点模块,但是当我尝试创build符号链接( npm link ../../../common/node_modules/express )时,npm似乎已经将其处理为一个“全局”安装,并重新安装在/usr/local/lib/node_modules/express (并创build一个“本地”符号链接到它./node_modules/express -> ),这不是我所期望的发生。 这是我真正想要的吗? 我是否应该先使用npm config set prefix ?

使用npm命令启动带参数的NodeJS项目

我正在尝试创build两个单独的npm命令来在开发机器上和生产模式下本地启动我的NodeJS项目。 我希望能够将参数分别传递给机器以提供正确的依赖关系 – 可以是生产环境中的CDN或本地机器。 这是我在package.json中看到的 "run": "node ./server/app.js", /* for running locally*/ "start": "node ./server/app.js", /* for running in production*/ 如果我尝试调用npm run – 会产生这个错误: npm ERR! npm run-script [<pkg>] <command> npm ERR! not ok code 0 我也希望能够发送包含URL的命令行参数。

在Node应用程序之间共享代码

我们的应用程序由两个组件组成:API和客户端。 两者都是独立的Node应用程序 尽pipeAPI除了文档之外还没有任何前端组件,它们仍然共享一些常见文件,如Jade组件,规范化CSS,实用程序模块,最重要的是用于MongoDB交互的Mongoose模式和模型定义。 我真的不想习惯于我首先对API进行更改的工作stream程,然后将更改后的文件复制到客户端,反之亦然,所以find一个可行的解决scheme将是非常好的。 跨Node应用程序共享各种代码的最佳方式是什么? 在浏览网页时,我遇到了一些解决scheme,但在这种情况下,他们都没有真正的工作。 一种解决方法是从公共文件中创build一个节点模块,并使其与具有NPM的应用程序保持同步,但是这意味着我(以及未来可能的开发者)必须知道哪些文件是公共模块的一部分,并且需要它们用require('node_modules/mongo/schemas/example.js')代替require('mongo/schemas/example.js') 。 由于假设可能有数百个通用文件,所以不可能记住文件是否通用,特别是对于新的开发者。 另一个解决scheme是制作通用模块的git子模块。 这将是完美的,如果只有我可以包含子模块path的节点的要求path,所以万一没有find所需的文件在预期的位置(例如, mongo/schemas/example.js ),它会看起来在常见的子模块( common/mongo/schemas/example.js )。 这将是非常棒的,因为它将允许覆盖“本地”版本的公共文件。 这有点像Magento的作品。 这里的问题是,Node不允许编辑requirepath(至less,据说在Node 0.5之前是可能的),所以这是一个好消息。 第三种解决scheme是将公共存储库的内容粗暴地合并到应用程序的根目录中。 在这个解决scheme中没有真正不可逾越的问题,但我觉得这是一个不好的做法。 毕竟,这将不可能通过应用程序编辑通用文件,因为没有办法select性地将通用文件推送到通用的git存储库。 所以基本上这个解决scheme只会使工作stream程变得更乏味:对公共文件的所有修改都必须手工复制到公共代码库,然后推送到git remote,然后复制到其他应用程序。 所以这个解决scheme绝对不会为我削减。 看来第二个解决scheme是我唯一的(也是最好的)select,除非你们提出了一个更好的(我真正希望的是:D)。 如果有人知道改变节点需求path的方法,我将非常感激。

bcrypt不安装在Ubuntu上

我试图在Ubuntu安装bcrypt ,但得到以下错误。 我无法正确理解错误消息。 下面是关于同样的问题的一些讨论: https : //github.com/ncb000gt/node.bcrypt.js/issues/90,但仍然没有find解决办法。 我也尝试更新npm( npm install -g npm )并安装bcrypt而没有运气。 isha@isha-ubuntu:~/Documents/xpressnepal$ sudo npm install npm http GET https://registry.npmjs.org/bcrypt/0.7.7 npm http 304 https://registry.npmjs.org/bcrypt/0.7.7 npm http GET https://registry.npmjs.org/bindings/1.0.0 npm http 304 https://registry.npmjs.org/bindings/1.0.0 > bcrypt@0.7.7 install /home/isha/Documents/xpressnepal/node_modules/bcrypt > node-gyp rebuild gyp ERR! configure error gyp ERR! stack Error: "pre" versions of node cannot be installed, […]

如何使用broccoli.js获得一个简单的文件树连接

我试图让我的头在broccoli.js,但遇到了一个错误。 如果你看看我的GitHub仓库,你会看到我有一个brocfile.js,看起来像这样: brocfile.js var compileES6 = require('broccoli-es6-concatenator') var pickFiles = require('broccoli-static-compiler'); var mergeTrees = require('broccoli-merge-trees') var app = 'app' app = pickFiles(app,{ srcDir: '/', destDir: 'app-kit' }) var appJS = compileES6(app, { inputFiles: ['/app-kit/**/*.js'], outputFile: '/dist/app.js' }) module.exports = mergeTrees([appJS]); 我得到这个错误: Built with error: Error: ENOENT, no such file or directory 'tmp/static_compiler-tmp_dest_dir-JjclDVEm.tmp/undefined' at Object.fs.statSync (fs.js:684:18) […]

在Ubuntu 14.04上的MEAN堆栈突然停止工作

好吧,这太臭了,这里是独家新闻: 我正在帮助一个朋友在使用MEAN堆栈(mongodb,express,angular和nodejs)的网站项目上工作,我正在运行Ubuntu 14.04。 我对Linux非常了解,而且我是一名经验丰富的Web开发人员,但我的大部分经验都是使用LAMP堆栈。 直到今天晚上,我一直在做这个MEAN栈项目。 我的朋友跳回到今天晚上的发展,我帮助他们刷新他们在Mac上的节点env(他们大多做前端的HTML / CSS,我做全堆栈)通过运行npm更新和项目工作正常。 指出我可以轻松地刷新我的节点环境,以更加当前我试过同样的事情: 我试图更新我的节点和NPM环境,因为它已经过了几个月(我知道它的坏,我搞砸了,我承认它),我想我正在使用Node.js v 0.3.2.something ,没有想到在这个混乱发生之前检查版本号。 但现在我得到了疯狂的随机错误集,未满足的依赖关系,我无法通过使用npm安装来获取它们来解决未满足的依赖关系,我不能得到grunt来启动开发服务器,我试过删除节点和npm并重新安装(现在运行nodejs 0.10.25)已经运行apt-get update,apt-get install nodejs,apt-get install nodejs-dev,npm update,npm install等,但都无济于事。 我无法坚持和超越沮丧,请帮助! 下面是我得到的一些错误/缺失依赖的示例: module.js:340 throw err; ^ Error: Cannot find module './helpers' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load […]