Как установить команду тестирования по умолчанию для `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 не помогают.

Есть ли список всех значений по умолчанию для init?

4 ответа

Решение

Есть список всех настроек по умолчанию 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"
}

Хотя вы не можете (в настоящее время) настроить скрипты по умолчанию с помощью настроек npm, вы можете настроить весь npm init вывод, предоставив свой собственный init-модуль. По умолчанию хранится в ~/.npm-init.js - все, что вы экспортируете, становится результатом выполнения npm init,

Чтобы сделать это полезным, вы, вероятно, захотите захватить существующий модуль инициализации npm по умолчанию, который находится в <your npm install directory>/node_modules/init.js, Если вы заботитесь только о предоставлении тестового скрипта по умолчанию, самый простой вариант - использовать init-module, который предоставляет параметр конфигурации init-scripts-test,

Я искал способ программно создать с динамически определенными значениями. Я заметил, что создание файла перед вызовом работает должным образом.

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

Запуск после запуска приведенного выше кода сгенерирует package.jsonс scripts.test = "mocha"определенный.

Если вы ищете способ запустить npm init -yтакже из кода, я рекомендую использовать shelljs: shell.exec('npm init -y').

npm config set init ...создаст конфигурацию по умолчанию для всех будущих проектов, которые будут инициализированы - если вы хотите просто установить несколько значений один раз - просто используйте сценарий оболочки, чтобы записать некоторые значения до npm initвот так:

      echo '{"version":"0.1.0","license":"UNLICENSED","private":true,"scripts":{"test":"npx jest"}}' > "./package.json" && npm init -y
Другие вопросы по тегам