• package.json指南及其常用命令


    package文件属性

     1 {
     2   "name": "test-project",
     3   "version": "1.0.0",
     4   "description": "A Vue.js project",
     5   "main": "src/main.js",
     6   "private": true,
     7   "scripts": {
     8     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
     9     "start": "npm run dev",
    10     "unit": "jest --config test/unit/jest.conf.js --coverage",
    11     "test": "npm run unit",
    12     "lint": "eslint --ext .js,.vue src test/unit",
    13     "build": "node build/build.js"
    14   },
    15   "dependencies": {
    16     "vue": "^2.5.2"
    17   },
    18   "devDependencies": {
    19     "autoprefixer": "^7.1.2",
    20     "babel-core": "^6.22.1",   
    21     "copy-webpack-plugin": "^4.0.1",
    22     "css-loader": "^0.28.0",
    23     "eslint": "^4.15.0",
    24      …………
    25     "webpack-merge": "^4.1.0"
    26   },
    27   "engines": {
    28     "node": ">= 6.0.0",
    29     "npm": ">= 3.0.0"
    30   },
    31   "browserslist": ["> 1%", "last 2 versions", "not ie <= 8"]
    32 }
    View Code

    这里有很多东西:

    • version 表明了当前的版本。

        此属性遵循版本的语义版本控制记法,这意味着版本始终以 3 个数字表示:x.x.x

    • name 设置了应用程序/软件包的名称。

        名称必须少于 214 个字符,且不能包含空格,只能包含小写字母连字符(-下划线(_)。这是因为当软件包在 npm 上发布时,它会基于此属性获得自己的 URL。 

    • description 是应用程序/软件包的简短描述。
    • main 设置了应用程序的入口点。
    • private 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm
    • scripts 定义了一组可以运行的 node 脚本。
    • dependencies 设置了作为依赖安装的 npm 软件包的列表。
    • devDependencies 设置了作为开发依赖安装的 npm 软件包的列表。

        它们不同于 dependencies,因为它们只需安装在开发机器上,而无需在生产环境中运行代码。 

    • engines 设置了此软件包/应用程序在哪个版本的 Node.js 上运行。
    • browserslist 用于告知要支持哪些浏览器(及其版本)。

      

    package.json 文件还可以承载命令特有的配置,例如 Babel、ESLint 等。

    每个都有特有的属性,例如 eslintConfigbabel 等。 它们是命令特有的,可以在相应的命令/项目文档中找到如何使用它们。

    package文件更新

    在 package.json 中,可以使用 semver 表示法设置要升级到的版本(补丁版本或次版本),例如:

    tip:鉴于使用了 semver(语义版本控制),所有的版本都有 3 个数字,第一个是主版本,第二个是次版本,第三个是补丁版本。

    • 如果写入的是 〜0.13.0,则只更新补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
    • 如果写入的是 ^0.13.0,则要更新补丁版本和次版本:即 0.13.10.14.0、依此类推。
    • 如果写入的是 0.13.0,则始终使用确切的版本

    调用npm update命令, 文件中的依赖的版本会被更新,会更新package.json文件和package-lock.json文件。(不会更新主版本。只会根据^、~去更新次版本或者补丁版本)

    /////////////附加内容 开始/////////////

    若要发觉软件包的新版本,则运行 npm outdated。再所得的列表中,这些更新中有些是主版本。 运行 npm update 不会更新那些版本。 主版本永远不会被这种方式更新,因为它们(根据定义)会引入重大的更改,npm 希望为你减少麻烦。

    若要将所有软件包更新到新的主版本,则全局地安装 npm-check-updates 软件包:npm install -g npm-check-updates

    然后运行:ncu -u

    这会升级 package.json 文件的 dependencies 和 devDependencies 中的所有版本,以便 npm 可以安装新的主版本。

        现在可以运行更新了:npm update

        或者如果只是下载了项目还没有 node_modules 依赖包,并且想先安装新的版本,则运行:npm install 

    /////////////结束/////////////

    更新了情况如下图所示

      

    查看npm包安装的版本

    npm list:查看所有已安装的 npm 软件包
    npm list --depth=0:仅获取顶层的软件包(基本上就是告诉 npm 要安装并在 package.json 中列出的软件包)
    npm view [package_name] version:要查看软件包在 npm 仓库上最新的可用版本

     

    安装npm包的旧版本

    可以使用 @ 语法来安装 npm 软件包的旧版本:

    npm install <package>@<version>:例如npm install cowsay@1.2.0会安装 1.2.0 版本

    全局的软件包也可以这样做:

     npm install -g webpack@4.16.4

    可能还有需要列出软件包所有的以前的版本。 可以使用 npm view <package> versions

    卸载npm软件包

    如果使用 -S 或 --save 标志,则此操作还会移除 package.json 文件中的引用。

     npm uninstall <package-name>:卸载之前在本地安装(在 node_modules 文件夹使用 npm install <package-name>)的软件包,从项目的根文件夹(包含 node_modules 文件夹的文件夹)中运行

    如果使用 -S 或 --save 标志,则此操作还会移除 package.json 文件中的引用。如果程序包是开发依赖项(列出在 package.json 文件的 devDependencies 中),则必须使用 -D 或 --save-dev 标志从文件中移除: 

    npm uninstall -S <package-name>
    npm uninstall -D <package-name>

    如果该软件包是全局安装的,则需要添加 -g 或 --global 标志:(可以在系统上的任何位置运行此命令,因为当前所在的文件夹无关紧要。)
    npm uninstall -g <package-name>
    
    
  • 相关阅读:
    JVM源码分析之MetaspaceSize和MaxMetaspaceSize的区别
    JSTREE 实现AJAX重载入时刷新所有节点树
    .NET判断是否为AJAX提交
    防止重复提交的思路
    在使用EF时调用DBFUNCTION扩展方法时,发生ENTITYCOMMANDEXECUTIONEXCEPTION 异常的解决办法
    .NET和JAVA中BYTE的区别以及JAVA中“DES/CBC/PKCS5PADDING” 加密解密在.NET中的实现
    .NET中集合已修改;可能无法执行枚举操作 的解决办法
    ASP.NET中将导出的数据以UTF-8编码方式进行存储
    MVC中的BASE.ONACTIONEXECUTING(FILTERCONTEXT) 的作用
    MVC中部分视图调用方法总结
  • 原文地址:https://www.cnblogs.com/luoxuemei/p/14375945.html
Copyright © 2020-2023  润新知