Есть ли способ автоматически создать файл package.json для проектов Node.js

Предполагается ли, что файл package.json будет отредактирован вручную? Не могла ли программа, например, npm просто просматривать файлы, видеть инструкции "require", а затем использовать это, чтобы поместить необходимые записи в файл package.json? Есть ли такие программы?

Ответ 1

Файл package.json используется npm для изучения вашего проекта node.js.

Используйте npm init для создания файлов package.json для вас!

Он поставляется в комплекте с Npm. Прочитайте документацию здесь: https://docs.npmjs.com/cli/init.

Также есть официальный инструмент, который вы можете использовать для создания этого файла программно: https://github.com/npm/init-package-json

Ответ 2

Сначала беги

npm init

... задаст вам несколько вопросов (сначала прочтите это) о вашем проекте/пакете, а затем создайте для вас файл package.json.

Затем, когда у вас есть файл package.json, используйте

npm install <pkg> --save

или же

npm install <pkg> --save-dev

... установить зависимость и автоматически добавить ее в список dependencies package.json.

(Примечание. Возможно, вам придется вручную настроить диапазоны версий для ваших зависимостей.)

Ответ 3

Я просто написал простой script для сбора зависимостей в. /node_modules. Он выполняет мои требования в настоящий момент. Это может помочь некоторым другим, я размещаю его здесь.

var fs = require("fs");

function main() {
  fs.readdir("./node_modules", function (err, dirs) {
    if (err) {
      console.log(err);
      return;
    }
    dirs.forEach(function(dir){
      if (dir.indexOf(".") !== 0) {
        var packageJsonFile = "./node_modules/" + dir + "/package.json";
        if (fs.existsSync(packageJsonFile)) {
          fs.readFile(packageJsonFile, function (err, data) {
            if (err) {
              console.log(err);
            }
            else {
              var json = JSON.parse(data);
              console.log('"'+json.name+'": "' + json.version + '",');
            }
          });
        }
      }
    });

  });
}

main();

В моем случае выше script выводит:

"colors": "0.6.0-1",
"commander": "1.0.5",
"htmlparser": "1.7.6",
"optimist": "0.3.5",
"progress": "0.1.0",
"request": "2.11.4",
"soupselect": "0.2.0",   // Remember: remove the comma character in the last line.

Теперь вы можете скопировать и вставить их. Получайте удовольствие!

Ответ 4

npm init

создать файл package.json, а затем вы используете

ls node_modules/| xargs npm install --save

заполнить модули, которые есть в папке node_modules.

Изменение: @paldepind указал, что вторая команда является избыточной, потому что npm init теперь автоматически добавляет то, что у вас есть в вашей папке node_modules/. Я не знаю, было ли это всегда так, но теперь, по крайней мере, это работает без второй команды.

Ответ 5

Командная строка:

npm init

создаст файл package.json

Чтобы установить, обновить и удалить пакеты под зависимостями в файл package.json:

Командная строка:

npm install <pkg>@* --save 

автоматически добавит последнюю версию для пакета под зависимостями в файл package.json

EX:

npm install [email protected]* --save

Командная строка:

npm install <pkg> --save

также автоматически добавит последнюю версию для пакета под зависимостями в файл package.json

, если нужна конкретная версия для пакета, используйте эту Командную строку:

npm install <pkg>@<version> --save

автоматически добавит определенную версию пакета под зависимостями в файл package.json

Пример:

npm install [email protected] --save

, если вам нужен определенный диапазон версии для пакета, используйте эту Командную строку:

npm install <pkg>@<version range>

автоматически добавит последнюю версию пакета между диапазоном версии под зависимостями в файл package.json

Пример:

npm install [email protected]">1.0.0 <1.2.0" --save

Для более подробная информация о том, как написать версию для пакета npm Doc

Командная строка:

npm update --save

обновит пакеты в файл package.json и автоматически добавит обновленную версию для всех пакетов под зависимостями в файл package.json

Командная строка:

npm uninstall <pkg> --save

автоматически удалит пакет из зависимостей в файл package.json и удалит пакет из папки node_module

Ответ 6

Запуск npm init -y делает ваш package.json со всеми значениями по умолчанию.
Затем вы можете изменить package.json соответственно
Это экономит время много раз, предотвращая нажатие enter для каждой команды в npm init

Ответ 7

Теперь вы можете использовать Yeoman - Modern Web App Scaffolding Tool на терминале узла, выполнив 3 простых шага.

Во-первых, вам нужно установить yo и другие необходимые инструменты:

$ npm install -g yo bower grunt-cli gulp

Чтобы создать веб-приложение, установите генератор generator-webapp generator:

$ npm install -g generator-webapp  // create scaffolding 

Беги йо и... все готово

$ yo webapp  // create scaffolding 

Yeoman может написать стандартный код для всего вашего веб-приложения или контроллеров и моделей. Он может запустить веб-сервер предварительного просмотра для редактирования и компиляции; Мало того, что вы также можете запускать свои модульные тесты, минимизировать и объединять ваш код, оптимизировать изображения и многое другое...

Yeoman (yo) - инструмент для работы с лесами, который предлагает экосистему каркасных лесов, называемых генераторами, которые можно использовать для выполнения некоторых утомительных задач, упомянутых ранее.

Grunt/gulp - используется для сборки, предварительного просмотра и тестирования вашего проекта.

Bower - используется для управления зависимостями, поэтому вам больше не нужно вручную загружать свои библиотеки переднего плана.

Ответ 8

Основываясь на ответе Pylinux ниже, это решение для ОС Windows,

dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save

Надеюсь, что это поможет.

Ответ 9

используйте команду npm init -f для генерации файла package.json, после чего используйте --save после каждой команды, чтобы каждый модуль автоматически обновлялся внутри вашего пакета. json для ex: npm install express --save

Ответ 10

1. Выбор

Если вы git и пользователь GitHub:

generate-package проще, чем npm init.

еще

и/или вам не нравится шаблон package.json, который генерирует-package или генерирует npm init:

Вы можете создать свой собственный шаблон с помощью подмостей приложений, как генерировать, паруса или Yeoman.


2. Актуальность

Этот ответ актуален для марта 2018 года. В будущем данные из этого ответа могут устареть.

Автор этого ответа лично использовал generate-package в марте 2018 года.


3. Ограничения

Вам нужно использовать git и GitHub для использования generate-package.


4. Демонстрация

Например, я создаю пустую папку sasha-npm-init-vs-generate-package.

4.1. генерировать-пакет

Команда:

D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package
[16:58:52] starting generate
[16:59:01] √ running tasks: [ 'package' ]
[16:59:04] starting package
? Project description? generate-package demo
? Author name? Sasha Chernykh
? Author URL? https://vk.com/hair_in_the_wind
[17:00:19] finished package √ 1m

package.json:

{
  "name": "sasha-npm-init-vs-generate-package",
  "description": "generate-package demo",
  "version": "0.1.0",
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package",
  "author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)",
  "repository": "Kristinita/sasha-npm-init-vs-generate-package",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "license": "MIT",
  "engines": {
    "node": ">=4"
  },
  "scripts": {
    "test": "mocha"
  },
  "keywords": [
    "generate",
    "init",
    "npm",
    "package",
    "sasha",
    "vs"
  ]
}

4.2. npm init

D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See 'npm help json' for definitive documentation on these fields
and exactly what they do.

Use 'npm install <pkg>' afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sasha-npm-init-vs-generate-package)
version: (1.0.0) 0.1.0
description: npm init demo
entry point: (index.js)
test command: mocha
git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package
keywords: generate, package, npm, package, sasha, vs
author: Sasha Chernykh
license: (ISC) MIT
About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json:

{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}


Is this ok? (yes) y
{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}

Я думаю, что generate-package проще, чем npm init.


5. Настройка

Создайте свой собственный шаблон package.json, см. Примеры generate и yeoman.