关于gulp的2本手册说我需要先全局安装gulp(带-g标志),然后再本地安装一次。为什么需要这样做?
关于gulp的2本手册说我需要先全局安装gulp(带-g标志),然后再本地安装一次。为什么需要这样做?
将工具全局安装后,用户可以在命令行中的任何位置使用它,包括在 Node 项目之外。对于 Node 项目来说,全局安装是不好的,因为它会让部署变得更加困难。
npm
5.2
附带的 npx
实用程序解决了这个问题。你可以使用它调用本地安装的实用程序,就像使用全局安装的实用程序一样(但必须以npx
开头)。例如,如果您想调用本地安装的 eslint
,可以执行以下操作:
npx eslint .
当在您的package.json文件的script
字段中使用时,npm
会搜索node_modules
工具以及全局安装的模块,因此本地安装就足够了。
所以,如果您满意(package.json中的内容):
"devDependencies": {
"gulp": "3.5.2"
}
"scripts": {
"test": "gulp test"
}
如果你使用 npm run test
运行测试,那么你就不需要全局安装了。这两种方法都很有用,可以让人们快速设置项目而不需要使用 sudo
。此外,当 package.json 中的版本更新时,gulp
也会被更新,这意味着所有人在开发该项目时都将使用相同版本的 gulp。
似乎当全局安装 gulp 时,它会表现出一些异常行为。当作为全局安装使用时,gulp 会查找本地已安装的 gulp 并将控制权传递给它。因此,全局安装 gulp 需要先安装本地的 gulp 才能工作。然而,上述答案仍然成立:与全局安装相比,本地安装始终更可取。
./node_modules/.bin/gulp
。 - qubytegulp
和 coffee
定义了别名,以便从我的节点项目根目录中运行命令(例如 alias gulp="node_modules/.bin/gulp"
)。这样,如果需要使用这些命令,它们就很容易使用,并且不会发生全局/本地版本冲突。 - vessegulp
包以便将 node_modules/.bin/gulp
放入路径中。存储空间很便宜,但为了模拟符号链接而浪费 MB 的行为在我看来是纯粹的马虎。 - ntd你可以使用以下命令将全局安装的gulp
链接到本地:
npm link gulp
npm link
。 - gion_13我认为最终使用全局模块选项更有意义,可以避免在所有项目中重复安装常用工具,尤其是在使用grunt、gulp、jshint等开发工具的情况下。不幸的是,当你做与主流相反的事情时,你可能会遇到一些工具上的阻力。
如果您本地安装的node_modules
文件夹在PATH
中,则从技术上讲,您不需要全局安装它。但通常这样做并不是一个好主意。
或者,如果npm test
引用了gulp
,则只需输入npm test
,就可以运行本地的gulp。
我从未全局安装gulp -- 我认为这样做不好。
如果您使用的是MacOS或Linux操作系统,建议将以下内容添加到您的PATH环境变量中(在bashrc等文件中):
Original Answer翻译成"最初的回答"
node_modules/.bin
npm run
等问题。自从我使用了这个方法后,我再也没有全局安装过任何模块。"最初的回答"