package.json
Coddy'nin Node.js Journey'sinin Node.js Temelleri bölümünün bir parçası. Ders 22 / 24.
Bir projenin adını, sürümünü ve nasıl çalıştırılacağını belirten tek bir yere ihtiyacı vardır.
Bu yer package.json dosyasıdır. "type": "module", .js dosyalarının import kullanmasını sağlar; scripts, npm run için komutları adlandırır ve dependencies, npm install express komutunun node_modules dizinine indirdiği paketleri listeler. Bir program dosyanın kendisini içe aktarabilir:
{
"name": "weather",
"version": "0.3.1",
"type": "module",
"scripts": { "start": "node weather.js" },
"dependencies": { "express": "^5.1.0" }
}import pkg from './package.json' with { type: 'json' };
console.log(pkg.version);with { type: 'json' }, Node'a dosyanın kod değil, veri olduğunu bildirir. Bu olmadan Node içe aktarmayı reddeder.
Görev
Kolayversionkomutu,package.jsondosyasından okunannameveversiondeğerlerini içerennotes 1.2.0çıktısını verir.
node notes.js version komutunu çalıştır. Ardından package.json içindeki sürümü 1.3.0 olarak ayarla ve komutu tekrar çalıştır.
Kendin dene
// Not aracınız burada başlıyor.
import { rmSync } from 'node:fs';
import path from 'node:path';
import { formatNote } from './format.js';
import stats from './legacy/stats.cjs';
import store from './store.js';
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');
store.on('added', (note, n) => {
console.log(`Saved note ${n}.`);
});
const noteNumber = (word) => {
const n = Number(word);
if (!Number.isInteger(n) || n < 1 || n > store.notes.length) {
console.error(`No note ${word}`);
process.exit(1);
}
return n;
};
if (command === 'add') {
await store.add(text);
} else if (command === 'list') {
const owner = process.env.NOTES_OWNER ?? 'you';
console.log(`Notes for ${owner}`);
if (store.notes.length === 0) {
console.log('No notes yet');
}
const lines = store.notes.map((note, i) => formatNote(i + 1, note));
if (store.settings.sort === 'newest') {
lines.reverse();
}
lines.forEach((line) => console.log(line));
} else if (command === 'where') {
const file = path.join(process.cwd(), 'notes.json');
console.log(file);
console.log(path.basename(file));
} else if (command === 'stats') {
console.log(`${store.notes.length} notes, ${stats.countWords(store.notes)} words`);
} else if (command === 'done') {
const removed = await store.remove(noteNumber(words[0]));
console.log(`Done: ${removed}`);
} else if (command === 'remind') {
const note = store.notes[noteNumber(words[0]) - 1];
let count = 3;
const timer = setInterval(() => {
if (count > 0) {
console.log(count);
count -= 1;
} else {
console.log(note);
clearInterval(timer);
}
}, 200);
} else if (command === 'import') {
let input = '';
for await (const chunk of process.stdin) {
input += chunk;
}
const lines = input
.split('\n')
.map((line) => line.trim())
.filter((line) => line !== '');
for (const line of lines) {
await store.add(line);
}
console.log(`Imported ${lines.length} notes.`);
} else if (command === 'clear') {
rmSync('notes.json', { force: true });
console.log('Deleted notes.json');
} else {
if (command) {
console.error(`Unknown command: ${command}`);
}
console.error('Usage: node notes.js <command> [words]');
process.exit(1);
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Node.js Temelleri bölümündeki tüm dersler
1JavaScript'ı Node Üzerinde Çalıştırma
Merhaba, NodeKomut Satırı ArgümanlarıKomutlar