javascript - 打包前清理 package.json

标签 javascript node.js npm

假设您有一个包含以下 package.json 的 npm 项目:

{
  "name": "XXX",
  "version": "YYY",
  "license": "ZZZ",
  "scripts": {
    "scriptA": "...",
    "scriptB": "...",
    "preinstall": "...",
    "postinstall": "..."
  },
  "devDependencies": {
    "depA": "vA",
    "depB": "vB"
  },
  "dependencies": {
    "depC": "vC",
    "depD": "vD"
  }
}

打包/发布包时,您不需要 scriptsdevDependency 键。但更危险的是,当人们将您的软件包作为依赖项安装时,preinstallpostinstall 脚本可能会触发奇怪/不需要的操作。

那么如何清理 package.json,即删除不需要的 key ?

我目前使用的是 npm 3.10。如果我使用npm pack命令,根据npm documentation如果没有提供参数,它将简单地打包当前包(因此从磁盘获取原始 package.json),并且我无法提供任何选项来清理它。

我当然可以编写自己的脚本来压缩包并生成我自己的package.json。这是要走的路吗?

最佳答案

我创建了clean-package来做到这一点。

最简单的用法只需三步:

  1. npm install clean-package --save-dev

  2. clean-package Hook 到 prepackpostpack 脚本

    "scripts": {
      "prepack": "clean-package",
      "postpack": "clean-package restore"
    }
    
  3. clean-package 配置为 package.json 中的根属性

    "clean-package": {
      "remove": [
        "script",
        "devDependencies"
      ]
    }
    

还有更多选项和扩展用途,因此存储库上有更多信息:https://github.com/roydukkey/clean-package .

关于javascript - 打包前清理 package.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40942495/

相关文章:

javascript - 使用 Rails 4 以嵌套形式添加额外的 Field_for

php - 延迟 PHP 执行直到 JavaScript cookie 设置?

javascript - 用 cheerio 检测内联元素?

javascript - Angular 无法导入库

npm - 如何为 ijavascript 安装 npm 模块

node.js - LDAP获取全名和电子邮件nodejs

javascript - 如何从钛合金数据库中检索值?

javascript - 在表单中按名称查找 `datalist`?

node.js - Node + Coffeescript + Zappa

node.js - 删除模块目录后 npm install 不再可能