发布包到npm,如何只发布文件夹内文件而不包含文件夹本身?

如题,有这样一个工程:

testProject
    |--dist
    |   |--xxx1.js
    |   |--xxx2.js
    |   |--dir1
    |   |--dir2
    |--src
    |   |--xxx1.js
    |   |--xxx2.js
    |   |--dir1
    |   |--dir2
    |--index.js
    |--package.json

打包编译后的结果在 dist 文件夹下,我执行npm publish后,然后安装后的包结构成这样了

node_modules
    |--testProject
    |     |--dist
    |         |--xxx1.js
    |         |--xxx2.js
    |         |--dir1
    |         |--dir2
    |--其他包
    |   |--xxx1.js
    |   |--xxx2.js
    |   |--dir1
    |   |--dir2
    |--其他包

所以有没有办法发布的文件结构不包含 dist 目录。
期望的结果应该是这样:

node_modules
    |--testProject
    |      |--xxx1.js
    |      |--xxx2.js
    |      |--dir1
    |      |--dir2
    |--其他包
    |   |--xxx1.js
    |   |--xxx2.js
    |   |--dir1
    |   |--dir2
    |--其他包

package.json

{
    "files":[
        "dist",
        "LICENSE",
        ...
    ]
}
阅读 149
评论
    2 个回答
    • 10.5k

    理解错了你的需求, 修改答案

    npm publish 其实可以加参数, 目标可以是包含 package.json 的目录或者压缩包, 详见文档

    你可以利用 npm 的 hook, 在恰当的时机构造好一个压缩包或者目录, 或者比如说你自己写一个 npm script, 自己手动触发. 然后在产生这个目录或者压缩包后, npm publish target.tgz 应该就可以了

    这只是个思路, 你可以结合你实际情况来

    以下是旧回答


    如果没有理解错你的需求的话, 也许你需要使用.npmignore文件

    规则等同于.gitignore

    官网上可以搜到相关的文档

    https://docs.npmjs.com/using-...

      可以把package.json拷贝到dist文件夹下,修改下file字段再publish。

        撰写回答

        登录后参与交流、获取后续更新提醒