Javascript 如何查找npm重复包?

Javascript 如何查找npm重复包?,javascript,node.js,npm,Javascript,Node.js,Npm,npm重复数据消除可以展平文件夹结构。然而,在这样做之前。我希望看到一份重复包的清单,以便我知道是否继续。有没有这样的特点?如果没有,是否有某种脚本可以帮助我实现这一点?尝试以下方法: npm ls --parseable | xargs -L1 sh -c 'basename $1' dummy | sort | uniq -c | grep -v "^ *1 " | sort -rn 这里的管道是: 以可解析格式列出包 将每个路径剥离到仅包含包名称 按字母顺序对包名称进行排序,以准备计算

npm重复数据消除
可以展平文件夹结构。然而,在这样做之前。我希望看到一份重复包的清单,以便我知道是否继续。有没有这样的特点?如果没有,是否有某种脚本可以帮助我实现这一点?

尝试以下方法:

 npm ls --parseable | xargs -L1 sh -c 'basename $1' dummy | sort | uniq -c | grep -v "^ *1 " | sort -rn
这里的管道是:

  • 以可解析格式列出包
  • 将每个路径剥离到仅包含包名称
  • 按字母顺序对包名称进行排序,以准备计算唯一名称
  • 对唯一的包名称进行分组和计数
  • 隐藏未复制的包(计数=1)
  • 按出现次数的降序再次排序
  • 试试看。除版本外,它还向您显示副本的简化路径:

    $ find-duplicate-dependencies
    This package has the following duplicate dependencies:
    
    regenerator-runtime :
    [ { name: 'regenerator-runtime',
        version: '0.11.1',
        from: undefined,
        path: 'project/react-select/emotion/babel-plugin-emotion/babel-core/babel-runtime' },
      { name: 'regenerator-runtime',
        version: '0.12.1',
        from: undefined,
        path: 'project/recompose/@babel/runtime' } ]
    

    赞成。让我来修正一下错误。没有明显的特征,除非它隐藏在某个地方。悲哀。然后希望有人有一个grep脚本或类似的东西@李允智 汗. 哈哈,是的。但不是特定于一个包。我想找出所有的dup软件包。这太棒了。你是说xargs-L1吗?“-l”返回一个错误。是的-L1更兼容,尽管我的测试系统(Ubuntu 12.04)也支持-l,但我已经编辑了答案。要包含版本,可以使用
    npm ls--parseable--long | cut-d':'-f2 | sort | uniq-c
    查看每个版本的包依赖多少次。可用于查找在何处同时使用软件包的v1.0.0和v2.0.0(因为不同的软件包取决于不同的版本)。此答案无法正确处理命名空间软件包,如
    @babel/core
    。相反,我使用的是以下内容:
    npm ls | grep-v“dedupled”| grep-oe“\S*@”| sed'S/$/'| sort | uniq-c | sort-rn