3

我需要使用字体真棒。
PostCSS 尝试在源目录中查找字体,但不在 node_modules/font-awesome/fonts 中

错误文字:

Error: Can't resolve '../fonts/fontawesome-webfont.eot?v=4.7.0' in 'F:\OpenServer\domains\polymer-postcss\src'

进口:

@import "font-awesome/css/font-awesome.min.css";

webpack.config.js:

var cssPlugin = require('extract-text-webpack-plugin');
module.exports = {
    entry:      {app: './src/app.js'},
    output: {
        path:       './dist',
        filename:   '[name].js',
        publicPath: '/dist/',

    },
    plugins: [new cssPlugin({filename: '[name].css'}),],
    module: {
        rules: [
            {
                test: /\.css$/,
                loader: cssPlugin.extract({
                    use: 'css-loader?importLoaders=1&sourceMap!postcss-loader?sourceMap',
                }),
            },
            {   
                test: /\.(svg|png|gif|jpe?g|woff|woff2|eot|ttf)$/i,
                use: "url-loader?limit=10000&name=[path][name].[ext]?[hash]"
            },
        ],
    },
}

postcss.config.js

module.exports = {
    plugins: {
        'postcss-import': {},
        'postcss-cssnext': {
            browsers: ['last 2 versions', '> 20%'],
        },
    },
};
4

2 回答 2

0

这个 PostCSS 模块真的解决了我的问题

https://github.com/devex-web-frontend/postcss-assets-rebase

于 2017-04-08T19:50:05.300 回答
-1

您可以使用fa-font-path更改font-awesome查找字体的位置。在您的 CSS 中,您可以这样做:

@fa-font-path: "font-awesome/fonts";
@import "font-awesome/css/font-awesome.min.css";

虽然我通常只.scss通过设置$fa-font-path变量才能看到它。会postcss-import抱怨 import 语句需要放在第一位,但至少它仍然有效。

您也可以在没有, 的情况下使用@importCSS 中的语法来支持它。唯一的区别是您需要以 a 开头的路径表明它应该被解析为 a ,否则它会被解释为相对路径(如自述文件中所示)。没有,以下工作并且不会产生警告:postcss-importcss-loader~node_modulecss-loaderpostcss-import

@fa-font-path: "font-awesome/fonts";
@import "~font-awesome/css/font-awesome.min.css";
于 2017-03-21T18:57:22.350 回答