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 initdo 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 initwłaśnie tego szukałem! Poza tym zwykle biegam, npm shrinkwrapaby utworzyć npm-shrinkwrap.jsonplik
npm init: Użyj npm install <pkg> --savepóźniej, aby zainstalować pakiet i zapisać go jako zależność w pliku package.json.
npm initw 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 --yesto 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 dependencieslisty.
(Uwaga: Może być konieczne ręczne dostosowanie zakresów wersji dla zależności).
package.json, zwykle jest to obsługiwane automatycznie.
--savenie 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=0wydrukuje mniej więcej to samo (nie jestem pewien, czy tak było w 2012 roku)
a, a pakiet amusi pakiety bi cskrypt ten wyjście będzie wszystkie poziomy, tak a, b, cktó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 initteraz 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 initautomatycznie 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_moduleskatalogu. 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 -ysprawia, że masz package.jsonwszystkie ustawienia domyślne.
Następnie możesz package.jsonodpowiednio
zmienić.
To oszczędza czas wiele razy, uniemożliwiając naciśnięcie enterkaż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-packageprościej niż npm init.
jeszcze
i / lub nie podoba ci się package.jsonszablon, który generuje pakiet lub npm initgeneruje:
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-packageprościej, że npm init.
Które tworzą własny package.jsonszablon, zobacz przykłady generowania i Yeoman .
npm link