Предполагается ли, что package.json редактируется вручную? Может ли такая программа, как npm, просто просмотреть файлы, просмотреть операторы require и использовать их для помещения необходимых записей в файл package.json? Есть ли такие программы?
Предполагается ли, что package.json редактируется вручную? Может ли такая программа, как npm, просто просмотреть файлы, просмотреть операторы require и использовать их для помещения необходимых записей в файл package.json? Есть ли такие программы?
Ответы:
Файл package.json используется npm для изучения вашего проекта node.js.
Используйте npm initдля создания файлов package.json для вас!
Он поставляется в комплекте с Npm. Прочитайте документацию здесь: https://docs.npmjs.com/cli/init.
Кроме того, есть официальный инструмент, который вы можете использовать для программного создания этого файла: https://github.com/npm/init-package-json
npm initбыло именно то, что я искал! Также после этого я обычно запускаю, npm shrinkwrapчтобы создать npm-shrinkwrap.jsonфайл
npm init: Используйте npm install <pkg> --saveвпоследствии, чтобы установить пакет и сохранить его как зависимость в файле package.json.
npm initв консоли диспетчера пакетов из Visual Studio 2015 он просто отображается [...] Press ^C at any time to quit.и останавливается, ничего не спрашивая и не создавая файл json. Я что-то пропустил?
npm init --force --yesявляется одним вкладышем для создания этого файла
Сначала беги
npm init
... задаст вам несколько вопросов ( сначала прочтите это ) о вашем проекте / пакете, а затем создайте для вас файл package.json.
Затем, когда у вас есть файл package.json, используйте
npm install <pkg> --save
или
npm install <pkg> --save-dev
... установить зависимость и автоматически добавить его в свой package.json«s dependenciesсписок.
(Примечание. Возможно, вам придется вручную настроить диапазоны версий для ваших зависимостей.)
package.json, это обычно обрабатывается автоматически.
--saveбольше не требуется в новых версиях npm
Я просто написал простой скрипт для сбора зависимостей в ./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.
Теперь вы можете скопировать и вставить их. Радоваться, веселиться!
npm ls --depth=0будет печатать более или менее так же (не уверен, если это было в 2012 году, хотя)
aи пакет aнуждается пакетов bи c, этот скрипт будет выводить все уровни, поэтому a, b, cчто не правильно. Должен только выводиться a, подпакеты будут автоматически разрешены.
npm init
создать файл package.json, а затем вы используете
ls node_modules/ | xargs npm install --save
заполнить модули, которые есть в папке node_modules.
Изменить: @paldepind указал, что вторая команда является избыточной, потому что npm initтеперь автоматически добавляет то, что у вас есть в вашей папке node_modules /. Я не знаю, было ли это всегда так, но теперь, по крайней мере, это работает без второй команды.
npm initавтоматически добавляются зависимости на основе установленных пакетов и что нет необходимости запускать вторую команду.
npm dedupe, которое вытягивает зависимости, которые совместно используются вашими модулями, из этих модулей и сохраняет их на верхнем уровне вашего node_modulesкаталога. Но это не трогает package.json! Благодаря этому вы можете зафиксировать и поделиться своими дедуплицированными настройками.
Командная строка :
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
Для получения более подробной информации о том , как написать версию для пакета НОГО Doc
Командная строка :
npm update --save
обновит пакеты в файле package.json и автоматически добавит обновленную версию для всех пакетов, находящихся под зависимостями, в файл package.json
Командная строка :
npm uninstall <pkg> --save
автоматически удалит пакет из зависимостей в файл package.json и удалит пакет из папки node_module
Запуск npm init -yделает ваше package.jsonвсе по умолчанию.
Затем вы можете изменить package.jsonсоответственно.
Это экономит время много раз, предотвращая нажатие enterна каждую команду вnpm init
Теперь вы можете использовать Yeoman - современный инструмент для веб-приложений на терминале узла, выполнив 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 - используется для управления зависимостями, поэтому вам больше не нужно вручную загружать свои библиотеки переднего плана.
Основываясь на ответе Pylinux, ниже приведено решение для ОС Windows,
dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
Надеюсь, поможет.
используйте команду npm init -f для создания файла package.json и после этого используйте --save после каждой команды, чтобы каждый модуль автоматически обновлялся внутри вашего package.json для ex: npm install express --save
Если вы git и пользователь GitHub:
generate-packageпроще, чем npm init.
еще
и / или вам не нравится package.jsonшаблон, который генерирует пакет илиnpm init генерирует:
Вы можете создать свой собственный шаблон с помощью строительных лесов приложений , как генерировать , паруса или Yeoman .
Этот ответ актуален для марта 2018 года. В дальнейшем данные из этого ответа могут устареть.
Автор этого ответа лично использовал generate-package в марте 2018 года.
Вам нужно использовать git и GitHub для использования generate-package.
Например, я создаю пустую папку sasha-npm-init-vs-generate-package .
Команда:
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"
]
}
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.
Это создать свой собственный package.jsonшаблон, см генерировать и YEOMAN примеров.
npm link