关于前端:NPM如何只发布打包后的dist

52次阅读

共计 829 个字符,预计需要花费 3 分钟才能阅读完成。

首发于语雀文档

前言

因为我的项目要求,我写了一个基于 umi-request 的对立申请插件,但公司的公有库尚未搭建起来,尽管能够临时通过 webpack alias 别名援用的形式解决,但为了其他同学能疾速拉到我的插件,我只能临时先只将 dist 上传到 npm 仓库上。

一共有两种形式。

  • .npmignore(黑名单形式)
  • pkg.files(白名单形式)

黑名单形式

.npmignore

即:在我的项目根目录下新建一个名称为 .npmignore 的文件,应用与 .gitignore 一样的写法,将不心愿上传到 npm 仓库的文件记录进去。

白名单形式

pkg.files

即:在 package.json 新建一个名称为 files 的属性,以数组的形式,记录下心愿上传到 npm 仓库的文件。

备注

如果你的我的项目比较复杂比拟深层,如果你手动增加白名单的话,可能会漏掉某些文件。
这是举荐应用 ypkgfiles 主动生成 pkg.files。

ypkgfiles 的原理非常简单,通过 main 入口找到所有的绝对依赖,而后获取第一层的文件或目录就能生成 pkg.files 了。

ypkgfiles 还提供 –entry 参数来反对一些特定的场景,比方以下场景无奈被 ypkgfiles 辨认。

  • 比方某个目录是模板文件,不是通过 require 加载的
  • 如 mz 模块应用 require(‘mz/fs’) 的形式,并且这个文件不被 main require
  • egg 的目录是由 egg loader 加载的

应用 –entry 来增加这些文件或目录,比方 egg 我的项目

$ ypkgfiles –entry app –entry config –entry *.js

区别

依据本人的业务场景抉择即可,还是很容易辨别。
比方你是开源我的项目,所有的文件会心愿上传,如果你用第二种形式,就会使 package.json 变的宏大。
比方你是窃密我的项目,只心愿打包后的 dist 文件上传,如果你用第一种形式,书写 .npmignore 的时候你就会很头大。

参考

  1. 如何过滤 npm publish 的文件
正文完
 0