【制作npm包2】了解 package.json 相关配置

这篇具有很好参考价值的文章主要介绍了【制作npm包2】了解 package.json 相关配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

制作npm包目录

本文是系列文章, 作者一个橙子pro,本系列文章大纲如下。转载或者商业修改必须注明文章出处

一、申请npm账号、个人包和组织包区别
二、了解 package.json 相关配置
三、 了解 tsconfig.json 相关配置
四、 api-extractor 学习
五、npm包制作完整教程,我的第一个npm包


学习 package.json

各大项目的根目录都可以看到package.json这个文件,这个文件到底有什么作用了。对于这个文件的配置项很多,其中最常配置的nameversion,在平时开发种,大多数配置项可能非常没用。但是对于制作一个安装包而言,太重要了,这里必须解释一番。

这个json 大致是我的npm项目当中用到的配置,其它的

{
  "name": "@v3p/npm-pkg-by-vite",
  "version": "1.0.5-0",
  "description": "基于vite的npm包模板",
  "type": "module",
  "files": [
    "dist"
  ],
  "main": "./dist/index.cjs",
  "module": "./dist/index.mjs",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/index.mjs",
      "require": "./dist/index.cjs",
      "types": "./dist/index.d.ts"
    }
  },
  "scripts": {
    "dev:demo": "cd example && vite",
    "build:demo": "cd example && vite build",
    "build": "vite build",
    "build-types": "vue-tsc -p ./tsconfig.types.json && api-extractor run -c api-extractor.json && node scripts/cleanup.js",
    "build-all": "npm run build && npm run build-types"
  },
  "keywords": [
    "一个橙子pro",
    "vue",
    "vite",
    "typescript"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/vue3plugin/npm-pkg-by-rollup.git"
  },
  "author": "biancangming",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/vue3plugin/npm-pkg-by-rollup/issues"
  },
  "homepage": "https://github.com/vue3plugin/npm-pkg-by-rollup#readme",
  "devDependencies": {
    "@microsoft/api-extractor": "^7.36.4",
    "@types/node": "^20.4.8",
    "@vitejs/plugin-vue": "^4.2.3",
    "tslib": "^2.6.1",
    "typescript": "^5.1.6",
    "vite": "^4.4.9",
    "vue": "^3.3.4",
    "vue-tsc": "^1.8.8"
  },
  "dependencies": {
    "@tsconfig/node18": "^18.2.0",
    "@vue/tsconfig": "^0.4.0"
  }
}

name

仓库的名字,这个名字可能在开发项目的时候没放在心上。对于npm包而言,当我们发布一个插件之后,使用npm install xx命令时,npm网站就会查找这个名字,下载到本地的node_modules文件夹里面。

@开头的就是组织的命名方式了。

一般在项目使用第三方包的时候,无论是require还是import实际上是调用的这里的名字。这点,在制作包的章节会重点介绍。

version

当我们在项目根目录执行npm version xxx命令时,这个版本号会随之变动。这块建议反复练习,自行观察。

version 的格式是major.minor.patch-prerelease, 并且需要遵循该规则。这个字段是一个包当中十分必要的字段,该字段由四位组成,分别是主要版本号、次要版本号、补丁版本号、最后存在短杠连接的表示预览版本,且存在一个预览的版本号

版本号的主要操作命令是,npm version,我们可以直接执行类似,npm version 1.0.0的命令修改当前的版本号,如果只是这样的话,还不如在 package.json文件当中手动修改。

在官方的解释当中,它的命令是这样的。

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]

下面是对该命令用法上的一些举例

npm version major 执行该命令修改主要版本号+1,同时清除预览版本号(如果存在)
npm version minor执行该命令修改次要版本号+1,同时清除预览版本号(如果存在)
npm version patch 执行该命令修改补丁版本号+1,同时清除预览版本号(如果存在)
npm version premajor 执行该命令修改主要版本号+1,同时添加预览版本号(如果不存在)
npm version preminor 执行该命令修改次要版本号+1,同时添加预览版本号(如果不存在)
npm version prepatch 执行该命令修改补丁版本号+1,同时添加预览版本号(如果不存在)
npm version prerelease 执行该命令预览版本号+1
npm version from-git 执行该命令拉取git版本号,同步为npm版本

在使用一个安装包的时候,通常会看到安装包的每个版本前有类似^~这种符号。

 "vue": "^3.3.4" // 

一旦有了符号的存在,则表示我们在执行npm install的时候,安装的并非看到的版本。

^ 表示锁定主版本,后边的版本是不会锁定的,在执行npm i的时候,也可能安装的是3.4.x的版本。
~ 表示锁住主版本和次要版本,只更新补丁版本

之前就有vue从2.6 升级2.7直接支持了composition-api的语法,导致我司大量项目翻车,只好逐个把项目当中^改为~。如果项目长时间搁置的话,建议将package-lock.json文件甚至node_modules一直做保留,血泪教训😥

type

用于指定 npm 包的类型,这个字段比较特殊,它影响的是开发阶段。目前对于新版的node来说有两种导包方式,目前可取值 commonjsmodule。设置为module,在根目录的配置文件就可以直接使用import方式导入包,而不需要module.exports的形式

files

在发布包的时候特别有用,用于控制推送到npm仓库包不包含多余的文件。

files 的值是一个数组,值是文件名或者文件夹名,如果是文件夹名,则文件夹下所有的文件也会被包含进来(除非文件被另一些配置排除了)

根目录下创建一个.npmignore文件,这个文件当中可以写入文件名或者文件夹名,用于排除某些文件。

文件示例如下

.vscode
demo/
etc/

main

main 字段指定了模块的入口文件,它的值是一个相对于项目根目录的路径。一般提供给commonjs模块系统使用,在项目当中使用require导入则使用这个字段

module

这个字段指定了用于 ES6 模块的入口文件。如果你的模块使用了 ES6 模块语法,并且想要在支持该语法的环境中使用该模块,就需要指定 module 字段。
一般提供给es模块系统使用,在项目当中使用import .. from ..导入则使用这个字段

types

这个字段指定了 typeScript 类型定义文件的入口,用于ts项目当中类型推断使用

exports

package.json 中,exports 字段是一个对象。表示可以定义多种类型的导入形式。例如:

{
  "exports": {
    ".": "./index.js",
    "./utils": "./lib/utils.js"
  }
}

这种方式的导入默认是es的导出方式,下面还有一种写法

"exports": {
    ".": {
      "import": "./dist/mjs/index.mjs",
      "require": "./dist/cjs/index.cjs",
      "types": "./dist/npm-pkg-by-rollup.d.ts"
    }
  },

这种方式则支持多种方式导出,对我们来说更加通用。后边在介绍npm制作时,对这里会进行一些拓展。

exports 可以替代上边几种类型,但是我们一般这四个字段都需要定义。毕竟旧版的node并不是全部能够支持这些字段,例如node12版本,可能还不识别exports。如果了解前端的模块化历史,就知道前端的模块化统一有多艰难,不过目前来说,一直向es模块化归一了。

author

指明项目的作者,网站上在keywords 下方显示

keywords

这个关键词是一个字符串数组,描述安装包的关键词。关键字在搜索包的时候,随着搜索结果出现在列表下方。
【制作npm包2】了解 package.json 相关配置,制作npm包修炼指南,npm,json,前端

description

一个描述当前项目的简短说明,描述同样显示在搜索结果当中。这个和keywords关键字一样重要,要不然别人在搜索包的时候没有任何描述,难免有些苍白。
【制作npm包2】了解 package.json 相关配置,制作npm包修炼指南,npm,json,前端

scripts

可运行于命令行的脚本命令的对象,它们用来执行项目中特定的任务。

repository

指向项目代码的 Git 存储库的 URL 的对象。

homepage

当前项目的主页 URL,和上方的repository在网站显示在如图位置。
【制作npm包2】了解 package.json 相关配置,制作npm包修炼指南,npm,json,前端

license

一个字符串,指明当前项目的开源许可证。

bugs

指定对项目有疑问时,去哪里进行提问。

dependencies

一个包含当前项目的生产环境所需的所有第三方包和模块的对象。

devDependencies

当前项目里面的开发依赖包,开发依赖包和上边的dependencies,很多人难以区分作用。的确,在日常开发的时候作用不是很明显,但是当制作安装包时就体现出作用了。当我们的依赖包被别人安装时, devDependencies里面的东西是不会被安装的。
通常使用npm i xx -D安装此类依赖包

peerDependencies

用于指导npm安装正确的依赖版本。

例如:某项目依赖vue 3.2.1这个版本,当我们安装当前包时,会根据peerDependencies的配置,寻找响应依赖版本是否已经被安装,如果依赖包没有被安装,或者安装版和已经安装的版本存在冲突,则会终止安装过程。

可以使用–legacy-peer-deps参数,绕过这种机制。文章来源地址https://www.toymoban.com/news/detail-654794.html

到了这里,关于【制作npm包2】了解 package.json 相关配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nodejs 第三章(Npm Package json)

    npm npm (全称 Node Package Manager)是 Node.js 的包管理工具,它是一个基于命令行的工具,用于帮助开发者在自己的项目中安装、升级、移除和管理依赖项。 https://www.npmjs.com/ 类似于 PHP 的工具: Composer 。它是 PHP 的包管理器,可以用于下载、安装和管理 PHP 的依赖项,类似于 np

    2024年02月14日
    浏览(88)
  • nvm, npm命令和package.json文件详解

    路径设置 镜像设置 查看命令 安装模块 卸载模块 更新模块 其他命令 以上几个命令可在package.json中自定义,如下:

    2024年02月11日
    浏览(34)
  • 如何使用npm一键升级package.json到最新版本

    第一步,全局安装   npm-check-updates 第二步,检查版本 在package.json所在目录(根目录)执行如下命令,可以查看当前的以来版本和最新的依赖版本, 执行完毕之后,可以看到所有依赖的当前的版本和最新版本号。   第三步,执行升级命令   第四步,重新安装 最后,就可以一

    2024年02月16日
    浏览(44)
  • npm link 实现全局运行package.json中的指令

    packages.json 执行命令 如果要解绑定 npm unlink testcli 现在你可以输入 itRun试一下 博主开发了一个浏览器aweb123.com

    2024年02月16日
    浏览(34)
  • package.json相关知识记录

    npm官方字段介绍 🍧 bin   =   简单理解:指定命令的名称及路径   🍉 相当于想path中添加路径,局部安装是在 ./node_modules/.bin/ ,全局安装是在全局的 bin 目录   🍉 bin指定的文件必须以 #!/usr/bin/env node 开头,系统才会使用node去执行该指定文件   🍉 npm link对开发的npm包进

    2024年02月11日
    浏览(47)
  • npm install 报错 The package-lock.json file was created with an old version of npm, npm WARN o

    解决方法直接看3 博主在VScode中用 npm install 命令下载包时报错,错误如下 npm版本过高,解决方法见第如下,亲测有效可以解决。 1.在vscode终端中输入如下命令行(可直接复制粘贴) 2. 然后输入 检查npm版本会显示一个低版本的 npm 的版本号。 3.然后再进行npm install 的操作就不

    2024年02月13日
    浏览(51)
  • npm install执行报错:ENOENT: no such file or directory, open ‘XXXXX\package.json‘

    先执行 npm init -f 再安装 npm install

    2024年02月11日
    浏览(52)
  • 包管理工具与配置文件package.json

    理解: 在前端工程化发展中,nodejs的出现让前端开始了工程化,结束了仅静态页和切图的工作。他为前端提供了一个运行环境,让前端彻底变成了一个单独的工程,可以运行、编译、构建打包等。 版本管理: 不同的前端项目可能使用不同的nodejs版本开发,因此nodejs的版本管

    2024年02月08日
    浏览(40)
  • package-lock.json found. Your project contains lock files generated by tools,yarn和npm一起使用了解决方式

    第一种方法: 第二种方法(感觉跟第一个一样 但是我用这个成功了):

    2024年02月11日
    浏览(33)
  • npm install 包的时候,提示安装成功,但是项目中没有出现,node_modules也没有安装的包,package.json中也没有任何依赖包记录

    ——这种情况一般是包安装错了目录! 1. 查看npm的配置   2.查看全局下,是否有自己安装的包 找到返回的地址中是否有自己安装的包 3.修改npm配置信息 ,查看  图例1 ,global属性是否安装到全局,如果你的这里是true,那么,就算你安装一个包时,没有写-g,它也会自动将你

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包