我创建了一个新项目
我npm install -g browserify
我使用cmdline browserify app.js > bundle.js
进行了测试。凉。
我想缩小,所以我npm install uglifyify --save-dev
我使用cmdline browserify -g uglifyify app.js > bundle.js
进行了测试。大。
现在我想用代码执行此操作,但我得到Error: Cannot find module 'browserify'
这是我的代码,基本上是替换cmdline
var browserify = require('browserify')
var fs = require('fs')
var bundler = browserify('./app.js')
bundler.transform({
global: true
}, 'uglifyify')
bundler.bundle()
.pipe(fs.createWriteStream('./bundle.js'))
似乎我需要再次在本地安装browserify到这个项目?
答案 0 :(得分:5)
安装像browserify
这样的npm模块允许您在命令行上使用browserify
作为命令。要在项目代码中使用该模块,必须将模块作为依赖项安装。换句话说,是的,必须在项目的./node_modules
文件夹中本地安装,并在package.json
文件中引用。
- 本地安装(默认):将内容放入当前软件包根目录的
./node_modules
。- 全局安装(使用
-g
):将内容放入/usr/local
或安装节点的任何位置。- 如果您要转发
require()
,请在本地安装。- 如果要在命令行上运行它,请全局安装。
- 如果您需要两者,请在两个地方安装,或使用
npm link
。
答案 1 :(得分:3)
正如在另一个答案中所说,解决此问题的一种方法是您可以在本地而不是全局安装browserify,例如:npm install --save browserify uglifyfy
。然后,您可以在script
中添加package.json
:
...
"scripts": {
"build": "browserify app.js > bundle.js",
...
},
...
现在,npm run-script build
将知道如何找到本地browserify,它将位于您的node_modules/
目录中。您的require('browserify')
将起作用,因为browserify现在是本地的。
另一种解决方法是NODE_PATH
env变量。将此变量设置为bashrc
或等效内容,如下所示:
export NODE_PATH=$NODE_PATH:$HOME/.nvm/versions/node/v4.2.6/lib/node_modules
调整全局node_modules所在位置的路径。然后,您可以require()
代码中使用-g标志安装的任何内容。
然而,这不是最理想的,因为它可能导致错误和误解。但是,如果它是一些快速和脏的脚本,它可以帮助。