未加载我的bundle.js Angular 2应用程序中的原始css

时间:2016-04-15 15:47:03

标签: css angular webpack

我一直在寻找解决问题的方法,但找不到为什么我的css没有加载。 我有一个简单的Angluar 2应用程序,需要组件中的html和css。 webpack正在进行捆绑并创建html和js文件的bundle.js。但是,它不会在bundle中加载css文件。它不是我的实际css,而是:

function(module, exports) {
    module.exports = "// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!./../../node_modules/css-loader/index.js!./print.css\");\nif(typeof content === 'string') content = [[module.id, content, '']];\n// add the styles to the DOM\nvar update = require(\"!./../../node_modules/style-loader/addStyles.js\")(content, {});\nif(content.locals) module.exports = content.locals;\n// Hot Module Replacement\nif(module.hot) {\n\t// When the styles change, update the <style> tags\n\tif(!content.locals) {\n\t\tmodule.hot.accept(\"!!./../../node_modules/css-loader/index.js!./print.css\", function() {\n\t\t\tvar newContent = require(\"!!./../../node_modules/css-loader/index.js!./print.css\");\n\t\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\t\t\tupdate(newContent);\n\t\t});\n\t}\n\t// When the module is disposed, remove the <style> tags\n\tmodule.hot.dispose(function() { update(); });\n}"/***/ }

这里是我正在使用的webpack.config文件的css部分:

{
                test:  /\.css$/,  
                loader: 'raw'
            },
            {
                test: /\.css$/,  
                loader: 'style!css'
            },
            {
                test:/\.gif|png/, loader: "file-loader"    
            },
            {
                test: /\.html$/,
                loader: 'raw'
            }
    resolve: {
        extensions: ['', '.ts', '.js', '.json','.css', '.html']
    }

在我的组件中我只需要html和css文件。

@Component({
    selector: 'my-app',
    styles: [require('./my.css')],
    template: require('./my.html')
})

bundle.js中的文本就像加载器找不到css文件一样,但它们与我加载的html文件处于相同的相对路径。

有人知道可能是什么问题吗?

感谢任何建议,我会因尝试不同的事情而感到茫然。

1 个答案:

答案 0 :(得分:0)

所以我发现了一个问题,解决了我的问题,至少其中一个问题。 我需要在我的serverd文件夹下排除css,如:

{
   test: /\.css$/,  
   loader: 'style!css,
   exclude: /app/
}

所以这种方式,那些css不会被styler和loader选中,因为我认为,angular需要一个文本列表作为CSS。 所以这解决了我的问题。

但我仍然有一个问题,我有一个黑客,但我不喜欢它。 在更改我的应用程序以使用webpack作为捆绑包之前,我使用的是npm和system.js(如angular.io网站上所述)。所以我在index.html中有一个全局的css,它完成了我的应用程序的整体样式。但是改成webpack之后显然无法像以前那样引用index.html中的全局样式。为了使全局样式在我的所有应用程序上工作,我将ViewEncapsulation模式更改为None(封装:ViewEncapsulation.None)。这有效,但我不喜欢它,它似乎不对,我害怕在路上咬我。

有人知道如何为所有应用程序要求我的全局css吗? 我找到了一种方法,但由于某种原因不起作用。 我尝试过ExtractTextPlugin,但无法让它工作。

{
    test: /\.css$/,  
    loader: ExtractTextPlugin.extract('style-loader', 'css-loader'),
    exclude: /app/
}

并添加到我的插件中:

plugins: [
new ExtractTextPlugin("./glob.css")
]

任何想法我做错了什么?

由于