Чи слід вручну редагувати package.json? Не могла така програма, як npm, просто переглядати файли, переглядати заяви «вимагати», а потім використовувати їх для введення необхідних записів у файл package.json? Чи є такі програми?
Чи слід вручну редагувати package.json? Не могла така програма, як npm, просто переглядати файли, переглядати заяви «вимагати», а потім використовувати їх для введення необхідних записів у файл 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в консолі Package Manager від 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 простих кроків.
Спочатку вам потрібно буде встановити йо та інші необхідні інструменти:
$ npm install -g yo bower grunt-cli gulp
Щоб створити риштування веб-програми, встановіть генератор-webapp генератор:
$ 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, а після цього - зберегти після кожної команди, щоб кожен модуль автоматично оновлювався всередині вашого пакета.json для ex: npm install express --save
Якщо ви git та користувач GitHub:
generate-packageпростіше, ніж npm init.
ще
та / або вам не подобається package.jsonшаблон, який генерує-пакує або npm initгенерує:
ви можете генерувати свій власний шаблон за допомогою програм для лісу як генерувати , вітрила або yeoman .
Ця відповідь актуальна для березня 2018 року. В майбутньому дані цієї відповіді можуть бути застарілими.
Автор цієї відповіді особисто використав Genex-пакет на березень 2018 року.
Вам потрібно використовувати git та GitHub для використання пакету generation.
Наприклад, я створюю порожню папку 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шаблон, див . Приклади генерування та йоманів .
npm link