我是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
或者分散相同模块的多个副本在我的磁盘上?
答案 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的需求,即使不推荐使用它(不是“正确的方法”),您也可以自由地做您可以使用自己的开发工具:)