【问题标题】:How to copy a JSON config file when installing my package安装我的包时如何复制 JSON 配置文件
【发布时间】:2020-10-20 16:02:12
【问题描述】:

我正在创建一个自定义 npm 包,我想添加一个 JSON 配置文件。

npm install mypackage 完成时,我想将此文件添加到节点应用程序的根路径中

我知道这是可能的,因为这是 typescript 正在做的事情,当我在我的应用程序文件夹中添加一个 tsconfig.json 文件 npm install typescript

我猜这是一个 package.json 配置,但我不知道是哪个。

谢谢

【问题讨论】:

    标签: node.js node-modules npm-install


    【解决方案1】:

    您可以使用postinstall 脚本实现此目的。

    { "scripts" :
      ...
      "postinstall" : "scripts/postinstall.js"
      }
    }
    

    这是文档中的explanation of npm lifecycle events

    例如,如果您的 package.json 包含以下内容:

    { "scripts" :
      { "install" : "scripts/install.js"
      , "postinstall" : "scripts/install.js"
      , "uninstall" : "scripts/uninstall.js"
      }
    }
    

    然后scripts/install.js会在生命周期的安装和安装后阶段被调用,scripts/uninstall.js会在包的时候被调用已卸载。由于 scripts/install.js 运行在两个不同的阶段,在这种情况下查看 npm_lifecycle_event 环境变量是明智的。

    【讨论】:

    • 非常感谢。 Si "install" "postinstall" 和 "uninstall" 是 "scripts" 数组中的保留关键字,如果找到,npm 将使用它们。我会解决这个 ;-)
    【解决方案2】:

    我使用genechk awnser解决了这个问题:

    我必须在我的 package.json 中添加一个“postinstall”脚本,但我还必须在之前添加“node”命令才能执行该脚本:

    "scripts" : [
      ...
      "postinstall" : "node scripts/postinstall.js"
      ]
    

    我还必须将脚本添加到包中交付的文件中:

      "files": [
        ...
        "scripts/**/*"
      ]
    

    我的 postinstall.js 看起来像这样:

    const fs = require('fs');
    
    // __dirname is "{ProjectFolder}/node_modules/mypackage/config"
    
    const CONFIG_SRC = `${__dirname}/../config/`;
    const CONFIG_DEST = `${__dirname}/../../../`;
    
    const CONFIG_MYPACKAGE = 'mypackageconfig.json';
    
    fs.copyFile(`${CONFIG_SRC}/${CONFIG_MYPACKAGE}`, `${CONFIG_DEST}/${CONFIG_MYPACKAGE}`, (err) => {
      if (err) throw err;
      console.log(`File ${CONFIG_MYPACKAGE} copied`);
    });
    

    为了完全正确,我必须按照相同的逻辑使用uninstall.js 脚本并删除文件

    【讨论】:

      猜你喜欢
      • 2018-05-07
      • 1970-01-01
      • 2020-01-22
      • 2021-10-27
      • 1970-01-01
      • 2013-03-07
      • 2019-09-10
      • 2020-03-08
      • 1970-01-01
      相关资源
      最近更新 更多