我正在尝试使用Gulp自动创建ZIP文件来分发我的PHP项目。我对 npm 还不是很熟悉。
我已经意识到我需要几个插件(到目前为止,gulp-asvn 和 gulp-zip)。我已经按照官方网站上提供的说明安装了它们,例如:
npm install --save-dev gulp-asvn
我的node_modules目录已经和实际的代码库一样大,而且作为一个内部开发人员工具,如果没有必要的话,我不想把它提交到我的 Subversion 存储库中。
有没有办法告诉 npm 需要哪些包,并有可能一次安装它们,这样当其他人签出代码时,配置他们的环境就不会有太多问题?在PHP的作曲家中,你会有一个composer.json
文件,但我不确定package.json
是否等同于该文件,而且npm install
也没有创建它。
TLDR如果您的依赖项在package.json
文件中命名,则罚款。用户只需对npm
说要安装它们:npm install
。
说来话长
假设您有package.json
文件。
现在你做到了
npm install --save-dev gulp-asvn
这将安装gulp-asvn
包并将其作为devDependencies
添加到package.json
文件中。
如果您忽略了检查文件中的node_modules
,则用户只需说npm
即可安装所有依赖项,您就可以了。
npm install
此命令查看package.json
内部,解析所有依赖项和开发依赖项,将它们从npm
注册表中拉下并安装它们。
曲家文档 -
这个想法并不新鲜,Composer 受到 node 的 npm 和 ruby 的捆绑器的强烈启发。
您可以使用此命令确保忽略要提交到 svn 存储库node_modules文件夹。
svn propedit svn:ignore .
将弹出默认文本编辑器,您可以根据文件夹结构添加要忽略node_modules目录。
现在如您所知,npm"可能"不会存在很长时间。为了安全起见,您可以为node_modules创建另一个存储库。
此外,还可以区分依赖项和开发依赖项,并将其分别保存在 package.json 文件中。
npm install
PS - 上面的命令足以让其他人配置他们的环境。如果没有,您可以将环境变量用于 api 密钥和其他环境相关常量。
如果文件夹中有文件package.json
,则节点模块将安装在文件夹中。该package.json
有许多字段,其中说明了作者,git存储库等。
这里有一个重要的字段,即dependencies:
,它基本上列出了运行此项目所需的节点模块。当npm install somePackage --save-dev
运行时,它会尝试查找package.json
并将其保存为依赖项,同时下载模块。
您可以通过编写npm init
并列出依赖项中的所有节点模块来创建package.json
"dependencies": {
"gulp-asvn": "^0.4.5",
"....." : ".."
},
并运行npm install
.
还可以通过单独运行 npm install --save-dev gulp-asvn
包和其他包来保存依赖项。然后,它将添加到您的package.json
项目依赖项存储在package.json
文件中,但如果文件不存在,npm install --save-dev
将不会创建该文件,甚至警告它不存在并且--save-dev
开关将不起作用。(从这个意义上说,它的行为与 Composer 不同,后者只是自动创建其composer.json
文件。
不是可再发行 JavaScript 库的项目的最低配置可以像这样小:
{
"private": true
}