Есть ли способ автоматически собрать файл package.json для проектов Node.js - PullRequest
388 голосов
/ 01 апреля 2012

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

Ответы [ 10 ]

583 голосов
/ 05 декабря 2012

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

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

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

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

200 голосов
/ 03 февраля 2013

Прежде всего, запустите

npm init

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

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

npm install <pkg> --save

или

npm install <pkg> --save-dev

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

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

171 голосов
/ 14 ноября 2012

Я только что написал простой скрипт для сбора зависимостей в ./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();

В моем случае вышеприведенный скрипт выводит:

"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.

Теперь вы можете копировать и вставлять их. Веселись!

79 голосов
/ 15 января 2014

npm init

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

ls node_modules/ | xargs npm install --save

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

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

24 голосов
/ 16 февраля 2014

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

npm init

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

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

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

npm install <pkg>@* --save 

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

EX:

npm install node-markdown@* --save

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

npm install <pkg> --save

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

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

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

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

EX:

npm install koa-views@1.0.0 --save

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

npm install <pkg>@<version range>

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

EX:

npm install koa-views@">1.0.0 <1.2.0" --save

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

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

npm update --save

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

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

npm uninstall <pkg> --save

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

14 голосов
/ 07 июля 2016

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

6 голосов
/ 15 августа 2015

Теперь вы можете использовать Yeoman - современный инструмент для создания веб-приложений на терминале узла, выполнив 3 простых шага.

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

$ npm install -g yo bower grunt-cli gulp

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

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

Запустите yo и ... все готово:

$ yo webapp  // create scaffolding 

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

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

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

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

5 голосов
/ 22 октября 2014

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

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

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

1 голос
/ 14 октября 2015

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

0 голосов
/ 01 марта 2018

1. Выбор

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

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

еще

и / или вам не нравится шаблон package.json, который генерирует пакет или 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's name? Sasha Chernykh
? Author's 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, см. , генерируйте и yeoman примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...