我有package.json
个文件,其中包含10个依赖项,
每次执行npm install -g
时,都会再次下载所有依赖项,这需要很长时间。
有没有办法从本地node_modules
目录中获取现有的依赖项?
这是我的package.json
依赖项:
"dependencies": {
"body-parser": "~1.16.0",
"colors": "^1.1.2",
"console-stamp": "^0.2.5",
"cookie-parser": "~1.4.3",
"dateformat": "^2.0.0",
"debug": "~2.6.0",
"express": "~4.14.1",
"ip": "^1.1.5",
"jade": "~1.11.0",
"lodash": "^4.17.4",
"morgan": "~1.7.0",
"nodemon": "^1.11.0",
"promise": "^8.0.1",
"rand-token": "^0.3.0",
"random-date-generator": "^1.0.2",
"restify": "^4.3.0",
"restify-cookies": "^0.2.2",
"serve-favicon": "~2.3.2"
}
谢谢,
答案 0 :(得分:1)
npm install -g
将当前包上下文(即当前工作目录)安装为全局包。您不需要这个来安装项目依赖项。相反,您可以使用npm install
来安装/更新node_modules文件夹中的依赖项。默认情况下,npm install
将在package.json
中安装列为依赖项的所有模块,并且它们不会每次都安装所有依赖项,只会在对package.json
或{{进行更改时更新1}}文件夹被清除。
使用node_modules
选项全局安装软件包,如cordova,gulp,yeoman等,您需要在多个项目中使用它们。
答案 1 :(得分:0)
从概念上讲,npm-install
的输入是package.json
,而其输出是完整格式的node_modules
树。
这应该不是问题,因为npm使用缓存。如果您已经安装了模块,则返回304,如果给出--verbose
npm install
命令,则可以通过npm install
检查它是否为相同版本的依赖项。
我的意思是:
$ npm install express
npm http fetch GET http://registry.npmjs.org/express
npm http fetch GET 200 http://registry.npmjs.org/express
最后,它显示:
++ express@4.16.2
在12.547s中添加了49个包
如果再次运行,则会看到
$ npm install express
npm http fetch GET http://registry.npmjs.org/express 408ms(来自缓存)
npm http fetch GET 304 http://registry.npmjs.org/express 408ms(来自缓存)
最后,它显示:
为package.json跳过写,因为没有更改
++ express@4.16.2
在4.11s中更新了1个包
它会点击缓存,不会再次下载。
当在项目上第二次运行npm update express
时,它将不会再次下载它只有npm将检查第一级模块以确保它们已安装。
但不遍历依赖关系树以确保安装所有子模块依赖关系。你可以运行npm过时来检查模块是否缺失但是npm不会为你安装它们。
package.json
更新express模块及其依赖项。因此,当您已经拥有该模块并希望获得新版本时,更新即可。无论npm install
如何,更新都将始终更新为最新版本,而package.json
将尊重> [05-Mar-2018 09:42:01 America/Toronto] PHP Notice: Undefined
> variable: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
> Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
> <title>Contest Entry Form</title>
> <meta http-equiv="content-type" content="text/html;charset=utf-8" />
> <meta name="robots" content="noindex,nofollow">
>
> <link rel="icon" href="https://wonderfest.com/wp-content/uploads/2017/01/favicon.ico"
> type="image/x-icon"/>
> <link href="../css/printout.css" type="text/css" rel="stylesheet"/>
> <link href="https://fonts.googleapis.com/css?family=Libre+Barcode+39+Extended|Oxygen+Mono|Roboto"
> rel="stylesheet">
>
> <!--<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">-->
> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
> </head> <body>
> <div id="container">
> <div class="no-print">
> <p><strong><u>Instructions</u></strong></p>
> in /Users/rwaddell/Dropbox/htdocs/wonderfest/secure/contest/common/php/printout.php
> on line 529 [05-Mar-2018 09:42:01 America/Toronto] PHP Fatal error:
> Uncaught exception 'Mpdf\MpdfException' with message 'Error detected.
> PDF file generation aborted: Undefined variable: <!DOCTYPE html
> PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
> <title>Contest Entry Form</title>
> <meta http-equiv="content-type" content="text/html;charset=utf-8" />
> <meta name="robots" content="noindex,nofollow">
>
> <link rel="icon" href="https://wonderfest.com/wp-content/uploads/2017/01/favicon.ico"
> type="image/x-icon"/>
> <link href="../css/printout.css" type="text/css" rel="stylesheet"/>
> <link href="https://fonts.googleapis.com/css?family=Libre+Barcode+39+Extended|Oxygen+Mono|Roboto"
> rel="stylesheet">
>
> <!--<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">-->
> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
> </head> <body>
> <div id="container"> in /Users/rwaddell/Dropbox/htdocs/wonderfest/secure/contest/common/php/printout.php
> on line 529 Marker - Mar 5, 2018, 10:06:39 AM
中提供的版本。