NPM Pack:重命名包目录

时间:2015-04-18 13:04:59

标签: javascript node.js npm

我有一个小脚本,使用npm pack打包某个nodejs模块。当我解压缩.tgz命令创建的npm pack时,里面的目录名为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"
         }
    });
});

1 个答案:

答案 0 :(得分:4)

@Kirill Slatin是对的。 package格式用于内部消费,因此npm不提供将名称从tar更改为其他内容的可供性。

但是,如果-s支持tar -xvz -s/package/foo/ -f foo-1.0.0.tgz 切换,则可以在提取时更改名称。在OSX上,你可以这样做:

var myVariable = anotherVariable

(已编辑,感谢David G指出错误。)