加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

这还是我最了解的package.json吗?

发布时间:2021-05-28 09:47:15 所属栏目:编程 来源:互联网
导读:常用配置项 files files定义了哪些文件应该被包括在 npm install 后的 node_modules中。 当然,有些文件是自动暴露出来的,不管你是不是配置了files,比如: pac

files定义了哪些文件应该被包括在 npm install 后的 node_modules中。

当然,有些文件是自动暴露出来的,不管你是不是配置了files,比如:

package.json

README / CHANGELOG / LICENSE

...

很多库都定义了 files,避免一些不必要的文件暴露到 node_modules 中。

vite 中是这样配置的:

  "files": [ "bin", "dist", "client.d.ts" ] 

我之前就不知道这个配置,导致我发布的一个 npm 组件 vue-awesome-progress[3] 就暴露了源码部分,虽然这也没啥影响,本来就是开源的。但是这也增加了别人的资源下载量,也是一种浪费。所以,专业点的搞法还是加上files配置吧。

bin

bin 列出了可执行文件,表示你这个包要对外提供哪些脚本。

在这个包被 install 安装时,如果是全局安装 -g,bin 列出的可执行文件会被添加到 PATH 变量(全局可执行);如果是局部安装,则会进入到 node_modules/.bin/ 目录下。

bin 在一些 CLI 工具中用得很频繁,比如 Vue CLI。

在开发 npm 包时,要求发布的可执行脚本要以#!/usr/bin/env node开头,这是为什么呢?

我查了一下,原来是为了用于指明该脚本文件要使用 node 来执行。

main, browser, module

这三个配置对我们的影响还是挺大的。

main字段决定了别人require('xxx')时,引用的是哪个模块对象。在不设置main字段时,默认值是index.js。

如果你开发的包是用于浏览器端的,那么用browser指定入口文件是最佳的选择。

module则代表你开发的包支持ESM,并指定了一个ESM入口。

具体这三个字段怎么用,还是挺有学问的,这里推荐一篇文章package.json中你还不清楚的browser,module,main 字段优先级[4],讲得挺细。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读