发布包到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",
        ...
    ]
}
阅读 10.2k
3 个回答

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

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

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

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

以下是旧回答


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

规则等同于.gitignore

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题