[NODE JS] npm init ile Proje Başlatma
Merhaba arkadaşlar. Her Node.js projesinin ilk adımı npm init komutudur. Bu komut package.json dosyasını oluşturur ve projenizin temelini atar. Basit bir komut gibi görünse de doğru yapılandırma ile başlamak projenin geleceğini etkiler. Ben her yeni projeye başlarken belirli bir şablon takip ediyorum ve bunu sizinle paylaşacağım.
npm init Kullanımı
Terminal açıp proje klasörüne gidip npm init yazarsınız. Bir dizi soru sorar: proje adı, versiyon, açıklama, giriş noktası, test komutu, git repository, anahtar kelimeler, yazar ve lisans. Her birine cevap verirsiniz veya Enter'a basarak varsayılanları kabul edersiniz.
Hızlı başlangıç istiyorsanız npm init -y yazarak tüm varsayılanları kabul edebilirsiniz. Ben genellikle bunu yapıp sonra package.json'ı elle düzenliyorum. Ayrıca npm config set ile varsayılan değerleri ayarlayabilirsiniz, mesela her init yaptığınızda yazar adınız otomatik gelsin istiyorsanız.
JavaScript:
// === NPM INIT SÜRECİ ===
// Terminal komutları:
// mkdir yeni-proje
// cd yeni-proje
// npm init
// İnteraktif sorular ve cevaplar:
// package name: (yeni-proje) -> Enter (varsayılan kullan)
// version: (1.0.0) -> Enter
// description: Node.js REST API projesi
// entry point: (index.js) -> src/index.js
// test command: jest
// git repository: https://github.com/user/yeni-proje
// keywords: nodejs, api, rest, express
// author: Ahmet Yılmaz <ahmet@example.com>
// license: (ISC) -> MIT
// Hızlı başlangıç:
// npm init -y
// Varsayılan ayarları yapılandırma (bir kez yapılır):
// npm config set init-author-name "Ahmet Yılmaz"
// npm config set init-author-email "ahmet@example.com"
// npm config set init-author-url "https://example.com"
// npm config set init-license "MIT"
// npm config set init-version "0.1.0"
// npm init -y ile oluşan varsayılan package.json:
const varsayilanPaket = {
name: "yeni-proje",
version: "1.0.0",
description: "",
main: "index.js",
scripts: {
test: 'echo "Error: no test specified" && exit 1'
},
keywords: [],
author: "",
license: "ISC"
};
console.log('Varsayılan package.json:');
console.log(JSON.stringify(varsayilanPaket, null, 2));
// Benim kullandığım package.json şablonu
const benimSablonum = {
name: "proje-adi",
version: "0.1.0",
description: "Proje açıklaması",
main: "src/index.js",
type: "module",
scripts: {
start: "node src/index.js",
dev: "node --watch src/index.js",
test: "node --test tests/",
lint: "eslint src/",
format: "prettier --write 'src/**/*.js'"
},
keywords: [],
author: "Geliştirici <dev@example.com>",
license: "MIT",
engines: {
node: ">=18.0.0"
}
};
console.log('
Benim şablonum:');
console.log(JSON.stringify(benimSablonum, null, 2));
Proje Yapısını Oluşturma
npm init'ten sonra proje klasör yapısını oluşturmak gerekiyor. Ben her zaman belirli bir yapı kullanıyorum ve yeni projelere bu yapıyı hızlıca kuran bir script yazdım. Bu yapı projenin büyümesine ayak uydurabilecek kadar esnek ama başlangıç için de karmaşık değil.
Tecrübeme göre doğru klasör yapısı oluşturmak projenin uzun vadeli sağlığı için çok önemli. İlk günden düzgün bir yapı kursanız ileride refactoring ihtiyacı çok daha az oluyor. Geçen sene tek dosyada başlayan bir proje altı ay sonra bakılamaz hale gelmişti, sıfırdan yapılandırmak zorunda kaldık.
JavaScript:
// === PROJE YAPISI OLUŞTURMA SCRİPTİ ===
const fs = require('fs');
const path = require('path');
function projeOlustur(projeAdi) {
const temelDizin = path.join(process.cwd(), projeAdi);
// Klasör yapısı
const klasorler = [
'src',
'src/controllers',
'src/models',
'src/routes',
'src/middlewares',
'src/services',
'src/utils',
'src/config',
'tests',
'tests/unit',
'tests/integration',
'docs',
'scripts'
];
// Dosyalar ve içerikleri
const dosyalar = {
'src/index.js': `const http = require('http');
const app = require('./app');
const PORT = process.env.PORT || 3000;
const server = http.createServer(app);
server.listen(PORT, () => {
console.log(\`Sunucu http://localhost:\${PORT} adresinde çalışıyor\`);
});
`,
'src/app.js': `const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const routes = require('./routes');
const app = express();
// Middleware'ler
app.use(helmet());
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Route'lar
app.use('/api', routes);
// 404 handler
app.use((req, res) => {
res.status(404).json({ error: 'Endpoint bulunamadı' });
});
// Error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(err.status || 500).json({
error: err.message || 'Sunucu hatası'
});
});
module.exports = app;
`,
'.env.example': `PORT=3000
NODE_ENV=development
DATABASE_URL=mongodb://localhost:27017/mydb
JWT_SECRET=your-secret-key
`,
'.gitignore': `node_modules/
.env
dist/
coverage/
*.log
.DS_Store
`,
'src/config/index.js': `require('dotenv').config();
module.exports = {
port: process.env.PORT || 3000,
nodeEnv: process.env.NODE_ENV || 'development',
dbUrl: process.env.DATABASE_URL,
jwtSecret: process.env.JWT_SECRET
};
`
};
console.log(`\nProje oluşturuluyor: ${projeAdi}`);
// Klasörleri oluştur
klasorler.forEach(klasor => {
const tam = path.join(temelDizin, klasor);
console.log(` Klasör: ${klasor}/`);
});
// Dosyaları oluştur
Object.entries(dosyalar).forEach(([dosya, icerik]) => {
console.log(` Dosya: ${dosya}`);
});
console.log(`\n${projeAdi} projesi hazır!`);
console.log('Sonraki adımlar:');
console.log(` cd ${projeAdi}`);
console.log(' npm install express cors helmet dotenv');
console.log(' npm install -D nodemon eslint prettier jest');
console.log(' cp .env.example .env');
console.log(' npm run dev');
}
projeOlustur('ornek-api');
Proje başlatma süreci basit görünse de doğru alışkanlıklar edinmek uzun vadede çok faydalı. npm init ile başlayın, doğru scripts ekleyin, klasör yapısını oluşturun, .gitignore ve .env dosyalarını hazırlayın. Bu adımları her projede tekrarlayarak bir rutin oluşturun. Kolay gelsin.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Sabit
- Cevaplar
- 4
- Görüntüleme
- 281
- Cevaplar
- 9
- Görüntüleme
- 473
- Cevaplar
- 2
- Görüntüleme
- 613
- Cevaplar
- 1
- Görüntüleme
- 522
- Cevaplar
- 2
- Görüntüleme
- 387