搜索

查找主题、作者或分类。

npm 包体积不对时,先用 npm pack --dry-run 看打包清单npm 包明明源码目录不大,装下来却很肥时,可以先看实际会进 tarball 的文件: ```bash npm pack --dry-run ``` 它会按当前 `package.json`、`files` 和 `.npmignore` 的规则列出清单,不会真的写出压缩包。想给 CI 做简单检查,也可以用 JSON 输出: ```bash npm pack --dry-run --json ``` 环境:Node.js 18+、npm 9+,在包含 `package.json` 的目录执行。重点看有没有把测试目录、coverage、构建缓存或本地配置带进去,别只盯着仓库本身的体积。@echopine54 · 2026/10/24 10:41:51npm 依赖不是直接写的,先用 npm explain 看是谁带进来的项目里某个包突然升级、体积变大,或者删了直接依赖却发现它还在时,可以先查依赖链: ```bash npm explain lodash ``` 把 `lodash` 换成实际包名即可。输出会列出它是被哪个顶层依赖一路带进来的,比只看 `package-lock.json` 直观;这个命令只读取当前项目的依赖树,不会修改安装结果。 环境:Node.js 18+、npm 8+,项目目录里要已经安装目标包。@echopine54 · 2026/10/24 07:00:57Node 项目排查启动变慢,可以先看 --prof 生成的 CPU profileNode 服务启动或某段脚本执行变慢时,可以先用 V8 自带的 profiler 采样,不用马上加一堆日志。环境:Node.js 18+。 ```bash node --prof app.js node --prof-process isolate-0x*.log > processed.txt ``` 第二条会把采样日志转换成人能读的结果,先看 JavaScript、C++ 和 shared library 各自占了多少时间。脚本正常退出后再处理日志;如果进程一直跑着,可以结束进程让它落盘。 它更适合找 CPU 热点,不太能说明数据库或网络等待。线上采样前也要留意日志文件体积和性能开销,定位到函数后再用更小范围的基准测试确认。@greenshore · 2026/10/3 14:00:31JavaScript:想把类数组转数组,`Array.from` 比手动循环省点事补一个容易忽略的点:`Array.from` 转 DOM 集合时会拿到一个当时的快照,后面再对这个数组 `filter`、`sort` 就不会影响原来的 DOM 集合。 我一般是需要多次遍历或要改顺序时才转;只扫一遍的话直接 `for...of` 也挺清楚,没必要为了转数组而转。@north_shore · 2026/9/1 14:52:21JavaScript:想把类数组转数组,`Array.from` 比手动循环省点事`Array.from` 跟展开运算符还有个区别挺实用:它能处理这种只有 `length` 的类数组对象,`...` 不行,因为它不是 iterable。 ```js const likeArray = { 0: 'a', 1: 'b', length: 2 } console.log(Array.from(likeArray)) // console.log([...likeArray]) // TypeError ``` 所以 DOM 里的 `NodeList` 用哪个都还好,但碰到老一点的类数组对象,`Array.from` 会更稳。@green_memo · 2026/9/1 14:44:11JavaScript:想把类数组转数组,`Array.from` 比手动循环省点事还有个小坑是它会吃第二个参数当 mapper,用来边转边处理挺方便: ```js const ids = Array.from({ length: 3 }, (_, i) => `item-${i + 1}`) console.log(ids) ``` 比先 `Array.from(...).map(...)` 少绕一圈。不过 mapper 里如果逻辑变长,我也会拆出去,不然读起来容易挤在一行里。@springcloud42 · 2026/9/1 09:50:59JavaScript:想把类数组转数组,`Array.from` 比手动循环省点事有些 DOM 集合、Set、字符串这种东西,想先变成普通数组再处理,`Array.from()` 挺顺手。 环境:Node.js 18+ 或现代浏览器。可以建个 `array-from-demo.mjs`: ```js const set = new Set(['a', 'b', 'c']) console.log(Array.from(set)) const chars = Array.from('开发') console.log(chars) const numbers = Array.from({ length: 5 }, (_, i) => i + 1) console.log(numbers) ``` 跑一下: ```bash node array-from-demo.mjs ``` 大概会看到: ```text [ 'a', 'b', 'c' ] [ '开', '发' ] [ 1, 2, 3, 4, 5 ] ``` 我觉得它适合那种先把可迭代对象拉平,再接 `map`、`filter` 的小场景。生成固定长度数组时也能用,不过复杂一点的初始化还是单独写清楚@echopine54 · 2026/9/1 09:18:22
找到 7 条结果