在本地和全局安装gulp插件

时间:2017-02-18 11:53:14

标签: javascript node.js plugins npm gulp

我是Gulp的新手,我有一个问题:我应该在本地还是全球安装gulp插件(例如gulp-sass或gulp-imagemin)?在网络上的例子中,人们大部分在本地进行(使用--save-dev选项)。据我了解,通过这样做,模块存储在本地node_modules文件夹中,作为devDependencies添加到本地package.json中,并可以通过require()在本地gulpfile.js中引用。因此,如果我需要为我正在处理的另一个项目安装相同的模块,可以通过将package.json复制到新项目的文件夹并在命令行工具中键入npm install来完成。 (在进入项目文件夹后)。精细。

但是,如果我作为一个普通的gulp用户,没有计划在npm空间上传和分享我的东西并且对维护devDependencies不感兴趣,那么在这种情况下我可以像{一样安装gulp插件吗? {1}}?它们会通过我系统中的全局路径找到吗?它是一个整体上的选项,如果我不想打扰自己复制npm install -g gulp-sass,每次创建一个新项目时运行package.json或者分散相同模块的多个副本在我的磁盘上?

2 个答案:

答案 0 :(得分:1)

对于您通过gulp使用的插件,您需要做的是将它们本地安装到项目中。虽然你必须在全局和本地安装gulp本身,然后运行该文件,然后让项目获取基于gulp的命令和函数。

您应该通过本地npm安装插件的原因是它特定于项目,例如,如果您然后将此项目上传到您的服务器或github上的主机,那么您将不得不去,必须再次全局安装所有的包。如果它们被保存,它们就存在于packages.json中,这样当您运行npm install安装所述项目的所有软件包时,npm知道要安装什么。

如果我可以进一步澄清任何事情,请告诉我。

答案 1 :(得分:0)

对于OP解释的典型情况,一种“全局安装”可能是拥有一个文件夹,在其中放置package.json和每个项目所需的每个依赖项,然后从那里运行npm install 。 并将每个项目的gulpfile放在这里(您可以根据需要命名),例如gulpfile-project1.js,conf-project2.js ...等等。

当然可以相应地调整这些文件中的路径。 然后从此目录使用-f标志运行gulp:

gulp -f gulpfile-project1.js

因此,您以这种脚手架告终:

my_dev_directory
  - project1
    - dev
      - main.less
      - main.js
    - www
      - main.css
      - main.js
  - gulp
    - node_modules
    - package.json
    - package-lock.json
    - gulpfile-project1.js

在gulpfile中,开始使用项目的基本路径声明一个const,以简化所有路径的声明,例如:

const path_dev = '../project1/dev';
const path_www = '../project1/www';

这样,您的磁盘上仅安装了一个node_modules目录,而项目目录仅包含要上传的公共文件,而没有dev文件。

当然,主要的缺点之一是您与所有项目共享相同的模块版本,但是它满足了OP的需求,即使不推荐使用它(不是“正确的方法”),您也可以自由地做您可以使用自己的开发工具:)