2016-09-25 26 views
2

我想在NPM上發佈角度2組件。該組件使用引用某些字體的css。至於發佈.ts文件,我可以做到這一點。但是我對css和字體感到迷茫。npm使用css和字體發佈組件

我:

despotic-turtle.component.ts 
despotic-turtle.component.css 
fonts/font.ttf .svg ... 

我和我的CSS有這樣的:

@font-face { 
    font-family: 'despotic-turtle'; 
    src: url('despotic-turtle/fonts/font.eot?ggipqk'); 
    /* ....*/ 
} 

我不能離開的CSS和字體的是,這樣可以做些什麼?

回答

1

css,fontshtml將包含在您的npm publish中。

,你會遇到將是引用CSS不會被發現,除非你在@Component添加moduleId問題:

@Component({ 
    moduleId: module.id 
}) 

請注意,您必須使用CommonJS的使這項工作進行編譯。

而且,你不應該在.ts文件發佈到NPM,你應該公佈的文件只有index.jsyour-component.js + your-component.css + your-component.html.d.ts文件和font文件。

請記住,npm僅用於發佈transpilled文件,當您導入庫時,您不必編譯它(檢查@angular庫,庫中沒有ts)。

+0

是的,你必須編譯這些文件,但你不必將它們添加到發佈中(將* .ts添加到你的.npmignore文件中)。你的字體不會被發現,這是100%肯定的,解決這個問題的唯一方法是使用cdn或者自己託管文件來使用url來添加它。 – Supamiu

+0

問題是'moduleId'已經被添加到'Component'裝飾器中來解決這個問題,但它不是用於css文件(你需要你的字體的地方)。 一種方法是使用'url(「/ node_modules/......」)導入字體'但是我想你已經知道它了,不想這樣做,因爲這是醜陋的!不幸的是,我認爲除了cdn存儲之外,您的問題沒有解決方案。每個組件庫都使用cdn,這就是爲什麼。 – Supamiu