我有一个小脚本,使用 npm pack
来打包某个 nodejs 模块。当我解压 npm pack
命令创建的 .tgz
文件时,里面的目录名为 package
。我的问题是是否有一种方法将此包重命名为项目的实际名称?
Package.json
{
"name": "package_name",
"version": "0.0.3",
"description": "A description",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"request": "2.55.0"
},
"devDependencies": {
"grunt": "0.4.5",
"grunt-contrib-concat": "0.5.1"
}
}
以下是我使用的代码,可能会有帮助。
npm.load('./some/path', function (er) {
if (er) {
res.send("er");
}
npm.commands.pack(['./another/path'], function (er, data) {
if (er) {
res.send("error");
}
var fileName = __dirname+"/projectName-0.0.3.tgz";
res.sendFile(fileName, {
headers: {
"Content-Type": "application/x-tar"
}
});
});
npm pack
创建的 tar 文件需要具有特定的格式,因为它的目的是通过 npm 存储库公开。 - Kirill Slatinpack.js
的 最新提交记录,除非重新构建自己的 npm,否则无法覆盖此行为。 - Kirill Slatin