2017-07-18 10 views
12

Projemde TypeScript 2 kullanıyorum. Bazı js kütüphanesini kullanmak istiyorum, ama aynı zamanda kütüphane için yazımlar yapmak istiyorum. Basit npm install @types/some-library ile türleri kurabilirim. Onları --save veya --save-dev yapmam gerekmediğinden emin değilim. Bana öyle geliyor ki, DefinetelyTyped GitHub bile her iki versiyondan bahsediyor, ama asla açıklamıyor. Geliştirme için türler gerektiğinden ve çalışma zamanında kullanılmadığından @types'in devDependencies olması gerektiğini düşünürdüm, ancak yalnızca dependencies numaralı telefondan birçok kez gördüm. Kafam karıştı.@ types/* 'ın bağımlılıklara mı yoksa' devDependencies`'e mi gittiğine nasıl karar veririm?

@ types/* öğesinin dependencies veya devDependencies içine girip girmediğine nasıl karar vermeliyim? Aslında biraz daha resmi talimatlar var mı?

+0

Bir paket mi oluşturuyorsunuz yoksa bu başkaları tarafından kullanılacak bir paket mi? Gördüğüm gibi, sadece ikinci durumda “bağımlılıklar” ve “devDependencies” arasındaki ayrımı yapmalısınız. – Valentin

+0

Js/t'leri sıfırdan bir oyun yapıyorum. Web paketi ile her şeyi paketliyorum. Tüm atm'da arka uç yok, ama bunu bir gün içinde bağımsız hale getirmek için hepsini Electron'a sarmam mümkün. Kimsenin kendi uygulamasında bir bağımlılık olarak kullanacağını düşünmüyorum, ama sanırım bu mümkün olabilirdi (GTA oyunlarında mini oyunlar düşünün ve oyunum açık kaynak). Yine de, en iyi uygulamaları öğrenmek ve uygulamak istiyorum ve bu oyunu yaptığımın ana sebebi. Umarım kullanım durumumu yeterince açıklamış olurum. :) – kamyl

+1

Evet, sadece orijinal cevabın kullanım durumunuzla ilgili olduğundan emin olmak istedim. Bir paket oluştururken “devDependencies” ile “bağımlılıklar” arasındaki ayrımın alakasız olduğunu düşünüyorum, bu, “create-react-app” uygulamasının da zorladığı bir şeydir (https://stackoverflow.com/a/44872787/1333383).) ama sonuçta bu sizin için – Valentin

cevap

11

DevDependencies'da @ types/some-module paketine sahip bir paket "A" geliştirdiğinizi varsayalım. Nedense sen türleri @/bazı-modülünden tip ihraç ediyoruz

import {SomeType} from 'some-module'; 
export default class APackageClass { 
    constructor(private config: SomeType) { 

    } 
} 

Şu anda paketin typescript tüketicilerin "A" yüklü DEĞİLDİR paketin devDependencies beri "A", sometype ne olduğunu tahmin edemiyoruz . Bu durumda, normal "bağımlılıklar" ile @ types/* paketi yerleştirmeniz GEREKMEKTEDİR. Diğer durumlar için "devDependencies" yeterince iyidir.

+1

'u seçmeniz size kalmış. Bu nedenle, eğer uygulamada sadece türü kullanırsam, tür tanımı 'devDependencies' olabilir mi? –

+1

Evet @FranklinYu. Tür, bildirim dosyasında göründüğü anda, 'bağımlılıklar' üzerine yerleştirmeniz gerekir. Aksi takdirde 'devDependencies' iyidir – wookieb

6

Bir paket mi oluşturuyorsunuz? Eğer öyleyse, nereye gittiğini tartışmak için çok fazla zaman harcamanızı öneriyorum. devDependencies ve dependencies yalnızca başkaları tarafından kullanılabilecek bir paket yayınlıyorsanız ve bunları gereksiz bağımlılıklarla spam olarak göndermek istemiyorsanız anlamlıdır.

TL; DR devDependencies'a yerleştirin. dediğiniz gibi "geliştirme için türler gerekli ve çalışma zamanında kullanılmıyor".

İlgili konular