【问题标题】:How do I set the default test command for `npm init`?如何为 `npm init` 设置默认测试命令?
【发布时间】:2021-01-21 00:34:08
【问题描述】:

我知道我能做到:

npm config set init.author.email me@mycompany.com
npm config set init.license UNLICENSED

使用npm init 设置用于创建新package.json 的默认值。但是如何设置test command 的默认值?我试过了

npm config set init.scripts.test "mocha"

但它不起作用。 npm docs 似乎没有帮助。

是否有所有初始化默认值的列表?

【问题讨论】:

  • 我想它会在运行init时自动询问你的测试是什么
  • @zcui93 是的,这就是我问如何设置默认值的原因:我厌倦了被问到。
  • 设置默认初始化是什么意思?通过 npm 运行测试的命令?
  • @我的意思是当你运行npm init时的默认“测试命令”@

标签: node.js npm npm-init


【解决方案1】:

有一个所有配置默认值npm config list -l的列表。

正如您所见,没有像 init.scripts 这样的东西。但是还有另一种方法可以做到这一点。如果你先 npm install mocha 然后 npm init 你会得到一个 package.json 像:

{
  "name": "asd",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {},
  "devDependencies": {
    "mocha": "^2.4.5"
  },
  "scripts": {
    "test": "mocha"
  },
  "author": "",
  "license": "UNLICENSED"
}

【讨论】:

  • mocha 已经安装在父模块中(我不想要另一个副本)但是如果“没有办法设置默认值”就是答案,那就这样吧。跨度>
【解决方案2】:

虽然您(目前)不能通过 npm 设置配置默认脚本,但您可以通过提供自己的 init-module 来自定义整个 npm init 输出。默认存储在~/.npm-init.js - 无论您导出什么都将成为运行npm init 的结果。

为了使它有用,您可能想要劫持现有的默认 npm init 模块,该模块位于 <your npm install directory>/node_modules/init.js 中。如果你只关心提供一个默认的测试脚本,最简单的选择是使用init-module,它提供了一个配置参数init-scripts-test

【讨论】:

  • init-module 看起来像这里的路。很好的答案。
【解决方案3】:

我正在寻找一种以编程方式创建具有动态定义值的package.json 的方法。我注意到在调用 npm init -y 之前创建了一个 package.json 文件按预期工作。

// Require: fs
const fs = require('fs')

// Variables
const values = {
    "scripts": {
        "test": "mocha"
    }
    // as well as any other values you want
}

// Create package.json
fs.writeFileSync('package.json', values)

在运行上述代码后运行npm init -y 将生成一个package.json,其中定义了scripts.test = "mocha"

如果您也在寻找在代码中运行 npm init -y 的方法,我建议您使用 shelljsshell.exec('npm init -y')

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 1970-01-01
    • 2013-09-26
    • 2023-03-14
    • 2016-07-04
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多