NPM如何只发布打包后的dist

blueju
• 阅读 1858

首发于语雀文档

前言

因为项目要求,我写了一个基于 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 的文件
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
blueju blueju
3年前
私有依赖的打包与上传
首发于<aname"2ro9T"</a背景项目中有三四个私有依赖(只有npm包,无源码),包括我封装的一些插件组件,需要上传到npm私有库,提供给其他同事组们使用。<br/<br/公司已有npm私有库,使用的是NexusRepositoryManager,上传的方式是:提交tgz格式的依赖包。最开始当初的我,
blueju blueju
3年前
记录一下我离线依赖迁移安装的具体尝试过程
首发于<aname"F7lHq"</a第1次直接安装,不可行,因为是私有依赖,根本安装不上。<aname"elctO"</a第2次流程:1.拷贝依赖到项目目录library中1.通过webpackalias别名的方式关联依赖<br/不可行,npmrunstart运行报错,缺少依赖。想想也是,依
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
35岁,真的是程序员的一道坎吗?
“程序员35岁是道坎”,“程序员35岁被裁”……这些话咱们可能都听腻了,但每当触及还是会感到丝丝焦虑,毕竟每个人都会到35岁。而国内互联网环境确实对35岁以上的程序员不太友好:薪资要得高,却不如年轻人加班猛;虽说经验丰富,但大部分公司并不需要太资深的程序员。但35岁危机并不是不可避免的,比如你可以不断精进技术,将来做技术管理或者
Wesley13 Wesley13
2年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这