Czy pakiet.json ma być edytowany ręcznie? Czy program taki jak npm nie może po prostu przejrzeć plików, wyświetlić instrukcji „wymagają”, a następnie użyć ich do umieszczenia niezbędnych wpisów w pliku package.json? Czy są jakieś takie programy?
Czy pakiet.json ma być edytowany ręcznie? Czy program taki jak npm nie może po prostu przejrzeć plików, wyświetlić instrukcji „wymagają”, a następnie użyć ich do umieszczenia niezbędnych wpisów w pliku package.json? Czy są jakieś takie programy?
Odpowiedzi:
Plik package.json jest używany przez npm do poznania twojego projektu node.js.
Służy npm init
do generowania plików package.json dla Ciebie!
Jest dostarczany w pakiecie z npm. Przeczytaj dokumentację tutaj: https://docs.npmjs.com/cli/init
Istnieje również oficjalne narzędzie, którego można użyć do programowego wygenerowania tego pliku: https://github.com/npm/init-package-json
npm init
właśnie tego szukałem! Poza tym zwykle biegam, npm shrinkwrap
aby utworzyć npm-shrinkwrap.json
plik
npm init
: Użyj npm install <pkg> --save
później, aby zainstalować pakiet i zapisać go jako zależność w pliku package.json.
npm init
w konsoli Menedżera pakietów z programu Visual Studio 2015 po prostu wyświetla [...] Press ^C at any time to quit.
i zatrzymuje się, nie pytając o nic ani nie tworząc pliku json. Czy coś brakuje?
npm init --force --yes
to jedyna linijka, która wygenerowała ten plik
Po pierwsze, biegnij
npm init
... zada Ci kilka pytań ( najpierw przeczytaj ) na temat twojego projektu / pakietu, a następnie wygeneruje dla Ciebie plik package.json.
Następnie, gdy masz plik package.json, użyj
npm install <pkg> --save
lub
npm install <pkg> --save-dev
... zainstalować zależność i automatycznie dołączyć go do swojej package.json
„s dependencies
listy.
(Uwaga: Może być konieczne ręczne dostosowanie zakresów wersji dla zależności).
package.json
, zwykle jest to obsługiwane automatycznie.
--save
nie jest już konieczne w nowszych wersjach npm
Właśnie napisałem prosty skrypt do zbierania zależności w ./node_modules. W tej chwili spełnia moje wymagania. Może to pomóc niektórym innym, zamieszczam to tutaj.
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();
W moim przypadku powyższy skrypt generuje:
"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.
Teraz możesz je skopiować i wkleić. Baw się dobrze!
npm ls --depth=0
wydrukuje mniej więcej to samo (nie jestem pewien, czy tak było w 2012 roku)
a
, a pakiet a
musi pakiety b
i c
skrypt ten wyjście będzie wszystkie poziomy, tak a
, b
, c
który jest nie poprawny. Powinien tylko wyświetlać a
, paczki zostaną automatycznie rozwiązane.
npm init
aby utworzyć plik package.json, a następnie użyć
ls node_modules/ | xargs npm install --save
aby wypełnić moduły, które masz w folderze node_modules.
Edycja: @paldepind wskazał, że drugie polecenie jest zbędne, ponieważ npm init
teraz automatycznie dodaje to, co masz w folderze node_modules /. Nie wiem, czy zawsze tak było, ale teraz przynajmniej działa bez drugiego polecenia.
npm init
automatycznie dodałem zależności na podstawie zainstalowanych pakietów i że nie było potrzeby uruchamiania drugiego polecenia.
npm dedupe
, który wyciąga zależności, które są współużytkowane przez moduły z tych modułów i przechowuje je na najwyższym poziomie node_modules
katalogu. Ale to nie dotyka package.json
! Dzięki temu możesz zatwierdzać i udostępniać swoją deduplikowaną konfigurację.
Wiersz poleceń :
npm init
utworzy plik package.json
Aby zainstalować, zaktualizować i odinstalować pakiety w zależności od pliku package.json:
Wiersz poleceń :
npm install <pkg>@* --save
automatycznie doda najnowszą wersję pakietu pod zależnościami do pliku package.json
DAWNY:
npm install node-markdown@* --save
Wiersz poleceń :
npm install <pkg> --save
automatycznie doda również najnowszą wersję pakietu pod zależnościami do pliku package.json
jeśli potrzebujesz konkretnej wersji pakietu, użyj tego wiersza poleceń :
npm install <pkg>@<version> --save
automatycznie doda określoną wersję pakietu w zależności od pliku do pliku package.json
DAWNY:
npm install koa-views@1.0.0 --save
jeśli potrzebujesz określonego zakresu wersji pakietu, użyj tego wiersza poleceń :
npm install <pkg>@<version range>
automatycznie doda najnowszą wersję pakietu między zakresem wersji w zależnościach do pliku package.json
DAWNY:
npm install koa-views@">1.0.0 <1.2.0" --save
Aby uzyskać więcej informacji na temat pisania wersji dla pakietu npm Doc
Wiersz poleceń :
npm update --save
zaktualizuje pakiety do pliku package.json i automatycznie doda zaktualizowaną wersję dla wszystkich pakietów zależnych do pliku package.json
Wiersz poleceń :
npm uninstall <pkg> --save
automatycznie usunie pakiet z zależności do pliku package.json i usunie pakiet z folderu node_module
Uruchamianie npm init -y
sprawia, że masz package.json
wszystkie ustawienia domyślne.
Następnie możesz package.json
odpowiednio
zmienić.
To oszczędza czas wiele razy, uniemożliwiając naciśnięcie enter
każdego polecenia wnpm init
Teraz możesz korzystać z narzędzia Yeoman - Nowoczesne narzędzie do rusztowania aplikacji sieci Web na terminalu węzłowym, wykonując 3 proste kroki.
Najpierw musisz zainstalować yo i inne wymagane narzędzia:
$ npm install -g yo bower grunt-cli gulp
Aby rusztować aplikację internetową, zainstaluj generator generator-webapp :
$ npm install -g generator-webapp // create scaffolding
Uruchom i ... wszystko gotowe:
$ yo webapp // create scaffolding
Yeoman może napisać pełny kod dla całej aplikacji internetowej lub sterowników i modeli. Może uruchomić serwer WWW z podglądem na żywo w celu edycji i kompilacji; nie tylko możesz uruchamiać testy jednostkowe, minimalizować i konkatenować kod, optymalizować obrazy i więcej ...
Yeoman (yo) - narzędzie do rusztowań, które oferuje ekosystem rusztowań specyficznych dla ram, zwanych generatorami, które mogą być użyte do wykonania niektórych żmudnych zadań wspomnianych wcześniej.
Grunt / gulp - służy do budowania, podglądu i testowania projektu.
Bower - służy do zarządzania zależnościami, dzięki czemu nie trzeba już ręcznie pobierać bibliotek frontonu.
Na podstawie odpowiedzi Pylinux poniżej znajduje się rozwiązanie dla systemu operacyjnego Windows,
dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
Mam nadzieję, że to pomoże.
użyj polecenia npm init -f, aby wygenerować plik package.json, a następnie użyj --save po każdym poleceniu, aby każdy moduł był automatycznie aktualizowany w pakiecie.json na przykład: npm install express --save
Jeśli korzystasz z Git i GitHub:
generate-package
prościej niż npm init
.
jeszcze
i / lub nie podoba ci się package.json
szablon, który generuje pakiet lub npm init
generuje:
możesz wygenerować własny szablon za pomocą aplikacji do rusztowań, takich jak generowanie , żagle lub szlachta .
Ta odpowiedź dotyczy marca 2018 r. W przyszłości dane z tej odpowiedzi mogą być nieaktualne.
Autor tej odpowiedzi osobiście wykorzystał pakiet generujący w marcu 2018 r.
Do korzystania z pakietu-generatora potrzebujesz git i GitHub.
Na przykład tworzę pusty folder sasha-npm-init-vs-generate-package
.
Komenda:
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"
}
Myślę, że generate-package
prościej, że npm init
.
Które tworzą własny package.json
szablon, zobacz przykłady generowania i Yeoman .
npm link