Чи слід вручну редагувати 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