2016-07-22 2 views
14

페이지에서 내 스타일 시트를 볼 수 있습니다. 그러나 나는 내 웹 글꼴을 작동시킬 수 없다. 나는 일어나지 않는 내 CSS의 출력을 저장하려고했습니다. 나는 이것이 글꼴이 작동하지 않는 이유라고 생각한다.Webpack - 스타일 시트가로드되어 있지만 글꼴이 없음

웹팩

var webpack = require ('webpack'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 

module.exports = { 

    resolve: { 
     extensions: ['', '.js'] 
    }, 

    entry: ['webpack-hot-middleware/client','./src/client/js/Kindred.js'], 

    output: { 
     path: './public', 
     filename: 'bundle.js', 
     publicPath: '/public/js' 
    }, 

    devtool: 'cheap-module-source-map', 
    module: { 
     loaders: [ 
      { 
       test: /\.js$/, 
       exclude: /node_modules/, 
       loader: 'babel-loader', 
       query: {presets: ['es2015', 'react', 'react-hmre', 'stage-0']} 
      }, 
      {test: /\.scss$/, loaders: [ 
       'style?sourceMap&modules', 
       'css?sourceMap&modules&importLoaders=1&localIdentName=[path]___[name]__[local]___[hash:base64:5]', 
       'resolve-url', 
       'sass?sourceMap&modules']}, 
      { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader?modules!css-loader?sourceMap&modules")}, 
      {test: /\.png$/, loader: "url-loader?limit=100000"}, 
      {test: /\.jpg$/, loader: "file-loader"}, 
      { 
       test: /\.(eot|svg|ttf|woff|woff2)$/, 
       loader: 'file?name=public/font/[name].[ext]' 
      } 
     ] 
    }, 

    sassLoader: { 
     includePaths: [ 'src/client/scss' ] 
    }, 

    plugins: process.env.NODE_ENV === 'production' ? [ 
     new ExtractTextPlugin ('app.css', {allChunks: true}), 
     new webpack.optimize.DedupePlugin(), 
     new webpack.optimize.OccurrenceOrderPlugin(), 
     new webpack.optimize.UglifyJsPlugin() 
    ] : [ 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoErrorsPlugin(), 
     new ExtractTextPlugin("[name].css") 
    ] 

}; 

Font.scss는

@font-face { 
    font-family: 'fontello'; 
    src: url('/public/font/fontello.eot?42978343'); 
    src: url('/public/font/fontello.eot?42978343#iefix') format('embedded-opentype'), 
     url('/public/font/fontello.woff2?42978343') format('woff2'), 
     url('/public/font/fontello.woff?42978343') format('woff'), 
     url('/public/font/fontello.ttf?42978343') format('truetype'), 
     url('/public/font/fontello.svg?42978343#fontello') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

구축

Hash: 6dbe5412ed2de3ad1f84 
Version: webpack 1.13.1 
Time: 5989ms 
            Asset  Size Chunks    Chunk Names 
           bundle.js 2.2 MB  0 [emitted] main 
    0.4dfc2adf9da9e1d82440.hot-update.js 402 kB  0 [emitted] main 
    4dfc2adf9da9e1d82440.hot-update.json 36 bytes   [emitted] 
          bundle.js.map 2.51 MB  0 [emitted] main 
0.4dfc2adf9da9e1d82440.hot-update.js.map 419 kB  0 [emitted] main 
chunk {0} bundle.js, 0.4dfc2adf9da9e1d82440.hot-update.js, bundle.js.map, 0.4dfc2adf9da9e1d82440.hot-update.js.map (main) 2.08 MB [rendered] 
    [565] ./~/css-loader?sourceMap&modules&importLoaders=1&localIdentName=[path]___[name]__[local]___[hash:base64:5]!./~/resolve-url-loader!./~/sass-loader?sourceMap&modules!./src/client/scss/main.scss 401 kB {0} [built] 
    + 565 hidden modules 
webpack: bundle is now VALID. 

폴더 구조 말대꾸 이후

<!doctype html public="storage"> 
<html> 
<link rel='stylesheet' href='/public/styles.css' type='text/css' /> 
<title>MyKindred.com</title> 
<div id=app></div> 
<script src="/public/js/bundle.js"></script> 
+0

폴더 구조에있는 Font.scss 파일 (설명에 표시됨)은 어디에 있습니까? fontello.scss입니까 아니면 다른 파일입니까? 지금까지의 설정에서 오류를 찾을 수 없었지만 Lindebergue와 같은 문제가 해결 된 경로라고 확신합니다. – Wolfgang

답변

0

좋아 너무 쉬운 사람들은 내가이되어이 여기서 일하는 얻을 무슨 짓을했는지 볼 수에 대한 : 나는 나를 완전히하는 SCS를 제거하고 단지 CSS로 갈 쉽게 생각

모듈을 즉시 구입할 수 있습니다. 이것은 많은 도움을주는 것처럼 보였다.

저는 [email protected] : christianalfoni/webpack-express-boilerplate.git를 사용하여 직접 안내해 드렸습니다. 내가 일하는 것을 알았 더라면 실제로 webpack에서 손으로 배웠던 것보다 훨씬 많은 것을 배웠습니다. 당신이 그렇게 많이 추측 할 수 있듯이 : D

또한 정말로 도움이되는 한 가지 주요 변화는 경로를 놀라 울 정도로 바꾸지 않는 것입니다. 하지만 이것들은 경로의 성별과 관련이 있습니다. output.path 전에 읽었지만, wepack.config.js과 관련이있는 것으로 생각하지 않았습니다. 거기에는 HTML과 CSS의 경우에도 모든 것이 문서 루트로 간주됩니다.

** KEY 부 : ** 나는 그것을 express.static 경로를 제공하지 않았로

가 나는 또한 나의 표현은, 설정 업데이트해야

... 내 어리 석음을 오, 어떻게 놓칠 수 이러한 기본을 맡은 일..그래서 :

익스프레스

app.use(express.static(__dirname + '/public/')); //Don't forget me :(

최종 CSS

/* Webfont: Lato-Black */@font-face { 
    font-family: 'LatoBlack'; 
    src: url('/font/Lato-Black.eot'); /* IE9 Compat Modes */ 
    src: url('/font/Lato-Black.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
     url('/font/Lato-Black.woff2') format('woff2'), /* Modern Browsers */ 
     url('/font/Lato-Black.woff') format('woff'), /* Modern Browsers */ 
     url('/font/Lato-Black.ttf') format('truetype'); 
    font-style: normal; 
    font-weight: normal; 
    text-rendering: optimizeLegibility; 
} 

Wekpack.config는

'use strict'; 
var path = require('path'); 
var webpack = require('webpack'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var qs = require('querystring'); 
var precss = require('precss'); 
var autoprefixer = require('autoprefixer'); 
var stripInlineComments = require('postcss-strip-inline-comments'); 

module.exports = { 
    devtool: 'eval-source-map', 
    // resolve: { modulesDirectories: ['node_modules'], extension: ['', '.js', '.css'] }, 
    entry: [ 
     'webpack-hot-middleware/client?reload=true', 
     path.join(__dirname, 'src/client/js/Kindred') 
     // path.join(__dirname, 'app/main') 
    ], 
    output: { 
     path: path.join(__dirname, '/public/'), 
     filename: '[name].js', 
     publicPath: '/' 
    }, 
    plugins: [ 
     new HtmlWebpackPlugin({ 
      template: 'public/index.tpl.html', 
      inject: 'body', 
      filename: 'index.html' 
     }), 
     new webpack.optimize.OccurenceOrderPlugin(), 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoErrorsPlugin(), 
     new webpack.DefinePlugin({ 
      'process.env.NODE_ENV': JSON.stringify('development') 
     }) 
    ], 
    module: { 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       exclude: /node_modules/, 
       loader: 'babel', 
       query: {"presets": ["react", "es2015", "stage-0", "react-hmre"]} 
      }, { 
       test: /\.json?$/, 
       loader: 'json' 
      }, 
      { 
       test: /\.jpg$/, loader: "file-loader" 
      }, 
      { 
       test: /\.css$/, 
       loaders: [ 
        'style-loader', 
        'css-loader?importLoaders&' + qs.stringify({ 
         modules: true, 
         importLoaders: 1, 
         localIdentName: '[path][name]-[local]' 
        }), 
        'postcss-loader?parser=postcss-scss' 
       ] 
      }, 
      // Font Definitions 
      { test: /\.svg$/, loader: 'url?limit=65000&mimetype=image/svg+xml&name=font/[name].[ext]' }, 
      { test: /\.woff$/, loader: 'url?limit=65000&mimetype=application/font-woff&name=font/[name].[ext]' }, 
      { test: /\.woff2$/, loader: 'url?limit=65000&mimetype=application/font-woff2&name=font/[name].[ext]' }, 
      { test: /\.[ot]tf$/, loader: 'url?limit=65000&mimetype=application/octet-stream&name=font/[name].[ext]' }, 
      { test: /\.eot$/, loader: 'url?limit=65000&mimetype=application/vnd.ms-fontobject&name=font/[name].[ext]' } 
     ] 
    }, 
    postcss: function (webpack) { 
     return [ 
      stripInlineComments 
      , precss 
      , autoprefixer 
      , require('postcss-simple-vars') 
      , require('postcss-nested' 
      , autoprefixer({browsers: ['last 2 versions']})) 
     ]; 
    } 
}; 

나는의를 말하고 싶은 시도한 모든 사람을 위해기도하십시오. 나는 결국 내가 멀리 떨어져 있다고 느낍니다. 나는 누군가에게 비슷한 문제가있는 경우에만이 글을 올리고있다. 이것이 내가 보일러 플레이트를 사용하는 것입니다. 또는 정적 부분과 html 내부의 parths 때문입니다.

1

url()을 사용하여 재 작성 URL을 제공하지 않습니다

enter image description here

HTML은 약간 tricky이다. 간단한 수정은 항목 파일에 대한 상대 경로를 사용하는 것입니다. 말대꾸는 "해결의 URL"옵션이 없기 때문이다

@font-face { 
    font-family: 'fontello'; 
    src: url('../font/fontello.eot?42978343'); 
    src: url('../font/fontello.eot?42978343#iefix') format('embedded-opentype'), 
     url('../font/fontello.woff2?42978343') format('woff2'), 
     url('../font/fontello.woff?42978343') format('woff'), 
     url('../font/fontello.ttf?42978343') format('truetype'), 
     url('../font/fontello.svg?42978343#fontello') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 
+0

의견을 보내 주셔서 감사합니다 : D 그러나 나는 얻습니다 : '오류 ./~/css-loader?sourceMap!./~/sass-loader?sourceMap!./src/client/scss/main.scss 모듈을 찾을 수 없습니다 : 오류 : C : \ var \ www \ wekindred.com \ src \ client \ scss @ ./~/css-loader?sourceMap !.에서 'file'또는 'directory'../font/fontello.eot를 확인할 수 없습니다. /~/sass-loader?sourceMap!//rc/client/scss/main.scss 6 : 887-927 '내 webpack.config에서 뭔가를 변경해야합니까? –

+3

올바른 상대 경로를 가져야합니다. 글꼴 SCSS 파일을 main.css로 가져 오면 main.css에서 글꼴 파일까지의 경로가 필요합니다. 그래서 그것은 다음과 같이 보일 것입니다 : '../../../public/font/fontello.eot?42978343'.. 만약 내가 정확하게 디렉토리를 계산한다면 ;-) – Wolfgang

0

(그러나 stylus 적은 (기본 옵션)을해야합니까). 내가 아는 유일한 해결책은 모든 URL https://github.com/bholloway/resolve-url-loader을 해결할 다른 로더를 사용하는 것입니다. 뭔가 같은 :

{ 
    test : /\.scss$/, 
    loaders: "!css!resolve-url!sass?sourceMap" 
} 
+0

슬프게도 이것으로 고칠 수 없었습니다 : O –

관련 문제