Предполагается ли, что 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