我即将用node.js做一个大型项目,目前正在尝试整理一些东西。
在早期的节点项目中,我有一个额外的文件夹来存放我使用的所有节点模块。这个文件夹被git忽略了,我通过git子模块管理版本和更新,这并不容易(没有依赖,更新到新版本并不总是很有趣)。
我要找的是:
npm install packagename
npm dump_modules_into_file
所以其他所有参与这个项目的人都可以这样做:
npm install_or_update_modules_from_file
我不想让我的git存储库跟踪node_modules。基本上,我想要一些类似于symonfy2如何处理它的bundles。
附言:我知道npm submodule packagename,但是这个命令没有多大帮助,因为它不安装依赖项,也不更新模块。
附言2:我已经准备好package.json了,但它也有一些缺陷。(没有参数,必须手动更新模块版本。)
发布于 2012-02-09 01:27:34
package.json将实现您正在寻找的目标。在您关于传递--mongodb:native标志的注释中,该标志是npm命令的参数,并且在您自己的项目中使用package.json时确实有效。mongodb包有一个“安装脚本”,用于在节点处理环境中查找该标志。如果该标志存在,那么它将为构建产生另一个进程。因此,如果您在package.json中使用mongodb作为依赖项
{
"name": "MyProject"
, "description": "Test"
, "version": "0.0.1"
, "dependencies": {
"mongodb": "*"
}
}运行npm install --mongodb:native将会起作用。
至于“手动更新”-这真的只是第一次,这可能需要一段时间,我相信如果有很多依赖项,你可以编写一个脚本来生成它。然而,听起来你有一个相当大的团队,如果是这样的话,自动更新package.json将变得非常丑陋(想想新的开发人员,实验功能,等等)。在开发周期的这一部分对损坏的构建负责并不一定是一个坏主意。
参考文献:
编辑:正如尼克提到的,将'node_modules‘目录添加到.gitignore将阻止这些文件被签入到您的存储库中
发布于 2012-02-08 12:46:39
Afaik,包管理的唯一方法就是你所描述的,尽管我不确定你对wrt package.json有什么不感兴趣。
如果您想严格控制您使用的模块的版本,可以显式地指定版本号。您还可以使用>=X.X.X方法自动获取最新的(高于阈值的),这对于开发目的来说有时是很好的。
这允许你的队友做以下事情:
npm install .它将安装package.json文件中列出的所有依赖项。这些将安装到./node_modules,但您可以按照您所说的那样对其执行.gitignore操作。
发布于 2014-07-29 07:25:00
为了全面测试包配置并确保模块在最终部署时的行为,我现在使用以下过程。它完全避免了破解你的node_module目录或require()代码的需要,所以当你去部署它时,只需运行即可。
对于内部项目或github的预发布,你可能还想在package.json中设置"private": true,这样npm就会拒绝发布它。
node_module添加到您的.gitignore files.npm就可以与您的本地npm服务器通信来获取包。任何它找到的子目录,它将发送。任何它找不到的都将代理到registry.npmjs.org。使用您的本地注册表服务器为您的应用程序创建一个单独的沙箱目录,然后使用$ npm set registry http://localhost:6070/ $ cd ~/projects $ npm-server$ npm cache clear; sleep 3; npm uninstall -g app; sleep 3; npm install -g app
$ app ....
服务器已完成测试,您可以发布应用程序,然后使用npm- $ npm set registry http://registry.npmjs.org:80/
`$ cd ~/projects $ npm publish app`您可以只使用本地主机服务器进行一次性安装,而不是注册和注销服务器:$ npm --registry=http://localhost:6070/ install app
我正在编写npm-server的派生版本,所以您可以这样做:$ npmsvr on // Registers local registry server $ npmsvr start // Start local registry server $ npmsvr off // Deregisters local registry server
https://stackoverflow.com/questions/9185411
复制相似问题