• npm install --save 、--save-dev 、-D、-S 的区别


    备注:<=> 意为等价于;

    1、npm install <=> npm i

         --save   <=> -S     

         --save-dev  <=> -D 

          npm run start <=> npm start  // 对应"scripts"里的"start"命令

          少敲几下键盘,何乐而不为

    2、npm i --save-dev  <packname>  

          工程构建(开发时、“打包”时)依赖 ;例:xxx-cli , less-loader , babel-loader...

    在 package.json 文件里面体现出来的区别就是,使用 --save-dev 安装的插件,被写入到 devDependencies 对象里面去,而使用 --save 安装的插件,则被写入到 dependencies 对象里面去。

    3、npm i --save <packname>

          项目(运行时、发布到生产环境时)依赖;例:antd , element,react...

    那 package.json 文件里面的 devDependencies和dependencies对象有什么区别呢?

    devDependencies是对开发环境所需依赖的声明(构建工具,测试工具) ,比如:babel,webpack,都放到当前目录。

    而 dependencies是对生产环境所需依赖的声明(开发应用中使用的框架,库) ,比如:jq,react,vue都需要放到这里面。

    4、对应关系如下(至于我们啥时候用--save、啥时候用--save-dev 感觉是个规范问题,用反了项目一样可以跑起来(对于安装依赖正确时),但会给其他看你项目的人带来误解、可能会导致一些bug的出现,还有一些配置的错乱等)

    总结一下:

    总体比较:

    npm install module:

    会把module包安装到node_modules目录中;

    不会修改package.json;

    之后运行npm install 命令时,不会自动安装module包。

    npm install module --save

    会把module包安装到node_modules目录汇总;

    会修改package.json,将模块名和版本号添加到dependencies部分;

    之后运行npm install 命令时,会自动安装module包;

    之后运行npm install --production或者注明NODE_ENV变量值为production时,会自动安装 module到node_modules目录中,即是在线上环境运行时会将包安装。

    npm install module --save-dev

    会把module包安装到node_modules目录汇总;

    会修改package.json,将模块名和版本号添加到devDependencies部分;

    之后运行npm install 命令时,会自动安装module包;

    之后运行npm install --production或者注明NODE_ENV变量值为production时,不会自动安装msbuild到node_modules目录中,即是在线上环境并不会进行安装。

    --save和--save-dev可以省掉我们手动修改package.json文件的步骤。我们使用的一些打包工具、非项目必须依赖的都放在devDependencies中。

    如何判断?

    一种是你在使用当前模块的时候,当前模块在github上会告诉你,它需要使用哪种方式安装。

    另一种就是你靠自己判断如何安装在哪个里面。

    如何使用?

    如果我们转移一个项目或者下载了一个别人的项目时,是不会带有node_modules目录中的模块的,所以我们拿到项目以后,是需要在根目录进行npm install进行项目安装的,这种默认是生产环境和开发环境都会安装。 

    如果带上后缀npm install --production则只会安装生产环境的所有模块,而无视开发环境的相关模块。 

    我们可以通过分开生产环境和开发环境相关的模块,还可以减少安装时间。达到节约时间的目的。

  • 相关阅读:
    thinkphp框架 url 去除index.php
    读yaml文件警告: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. data = yaml.load(fr)
    Appium 坐标定位元素
    Appium操作app弹窗
    AirtestIDE 教程(二)
    AirtestIDE 教程(一)
    Appium(五) aapt 不是内部或外部命令
    Appium(四) selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: You must include a platformName capability
    Appium(三) 打开 uiautomatorviewer.bat 闪退问题
    Appium(二) 下载安装 appium-python-client
  • 原文地址:https://www.cnblogs.com/samve/p/10633674.html
Copyright © 2020-2023  润新知