如何为`npm init`设置默认测试命令?

时间:2016-01-29 11:22:31

标签: node.js npm npm-init

我知道我能做到:

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

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

npm config set init.scripts.test "mocha"

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

是否有所有init默认值的列表?

3 个答案:

答案 0 :(得分:3)

列出了所有配置默认值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"
}

答案 1 :(得分:2)

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

// 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')

答案 2 :(得分:1)

虽然您无法(当前)通过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