2016-02-18 38 views
0

我正在试验gulp来自动创建一个ZIP文件来分发我的PHP项目。我不熟悉npm。在项目中保存gulp插件

我已经意识到我需要几个插件(gulp-asvn和gulp-zip到目前为止)。我已经安装了他们按照官方网站提供,例如指令:

npm install --save-dev gulp-asvn 

我node_modules目录已经大到实际的代码库,是只是一个内部开发的工具,我不希望犯如果我不需要,它会进入我的Subversion版本库。

有没有办法告诉npm需要哪些软件包,并有可能一次安装它们,所以当其他人检查代码时,配置环境时没有太多问题?在PHP的作曲家,你会有一个composer.json文件,但我不确定package.json是否与此相当,而npm install还没有创建它。

+0

我们使用'npm init'来安装'package.json',它包含节点模块运行所需的依赖关系。你可以列出所有在这其中是必需的,然后就执行'NPM install'安装在'package.json'一次列出的所有依赖关系的依赖关系。 –

+0

@Sumit所有答案都很有用,但你的评论是关键。如果您没有'package.json','--save-dev'参数不起作用。我被'composer require'迷惑了,它会自动创建所有文件。如果您发布了正确的答案,我会很高兴接受它。 –

+0

当然,我会构架答案并发布。请建议编辑来改善它。 –

回答

1

项目依赖存储在package.json文件中加入,但npm install --save-dev将无法​​创建文件,如果它不存在,或者甚至警告说,它不存在与--save-dev开关会没有效果。 (在这个意义上说,它的行为不同于作曲,这只是自动创建其composer.json文件。)

一个项目的最低限度配置,这不是JavaScript库可以小,因为这可再分发:

{ 
    "private": true 
} 
+0

很好解释! –

1

TLDR 如果您的依赖关系在package.json文件中命名,您的罚款。 用户只需要对npm说安装即可:npm install

说来话长

说你有你的package.json文件。

现在你做

npm install --save-dev gulp-asvn 

这将安装gulp-asvn包,并把它添加到package.json文件devDependencies

如果您忽略了已检查文件中的node_modules,则用户只需说npm即可安装所有依赖项,并且您没有问题。

npm install 

这个命令看起来package.json内,解决所有的依赖和开发的依赖关系,从npm注册表拉下来,并安装它们。

+0

我怀疑失踪位为NPM init'因为'--save-dev'不保存任何内容,据我可以告诉。我会检查并报告回来。 –

+0

'npm init'会创建你的'package.json'文件。您也可以手动创建它。 – MarcoL

1

从作曲家文档参考 -

这种想法并不新鲜和作曲家的强烈节点的NPM和红宝石的打捆启发。

您可以使用此命令来确保忽略node_modules文件夹以提交到svn repo。

svn propedit svn:ignore . 

默认的文本编辑器会弹出,你可以添加node_modules目录根据您的文件夹结构被忽略。

现在你知道npm'may'可能不会在很长一段时间。为了安全起见,您可以为node_modules创建另一个回购。

此外,您还可以将您的依赖关系和开发依赖关系区分开来,并分别保存在您的package.json文件中。

npm install 

P.S. - 以上命令对于其他人配置其环境绰绰有余。如果不是,您可以使用环境变量来获取api键和其他依赖于环境的常量。

1

节点模块安装的文件夹中,如果有文件package.json。 的package.json有许多领域它讲述了作者的Git仓库等

这里有一个重要的领域,这是dependencies:,基本上列出了需要运行这个项目节点模块。当运行npm install somePackage --save-dev,它试图找到package.json,并将其保存在它的依赖性,同时还下载模块。

您可以通过在依赖

"dependencies": { 
    "gulp-asvn": "^0.4.5", 
    "....." : ".." 
}, 

和运行npm installnpm init,并列出所有节点模块创建package.json

您还可以通过单独运行npm install --save-dev gulp-asvn包等保存的依赖关系。它会在你的package.json