GVKun编程网logo

如何在Webpack中使用CSS中的图像(webpack css)

15

在这里,我们将给大家分享关于如何在Webpack中使用CSS中的图像的知识,让您更了解webpackcss的本质,同时也会涉及到如何更有效地(23/24)webpack实战技巧:如何在webpack环

在这里,我们将给大家分享关于如何在Webpack中使用CSS中的图像的知识,让您更了解webpack css的本质,同时也会涉及到如何更有效地(23/24) webpack实战技巧:如何在webpack环境中使用Json、arcgis在webpack中的使用、css – Webpack和Sass正确处理后台:url()图像但是当与webpack-dev-server一起使用时找不到它、css – 在webpack中使用本地Web字体的内容。

本文目录一览:

如何在Webpack中使用CSS中的图像(webpack css)

如何在Webpack中使用CSS中的图像(webpack css)

我正在做一个带有Webpack设置的React,并且正在努力做应该看起来很简单的事情。我希望webpack包含图像,并像使用gulp一样将其最小化,但我无法弄清楚。我只希望能够像这样在我的CSS中链接图像:

/* ./src/img/background.jpg */body { background: url(''./img/background.jpg''); }

我所有的css / js / img文件夹都放在src文件夹中。Webpack输出到dist文件夹,但是我不知道如何在那里获取图像。

这是我的webpack设置:

 var path = require(''path''); var webpack = require(''webpack''); var HtmlWebpackPlugin = require(''html-webpack-plugin''); module.exports = {  devtool: ''cheap-eval-source-map'',  entry: [   ''webpack-dev-server/client?http://localhost:8080'',   ''webpack/hot/dev-server'',   ''./src/index.js''  ],  output: {  path: path.join(__dirname, ''dist''),  //  publicPath: ''./dist'',  filename: ''bundle.js''  },  plugins: [  new webpack.HotModuleReplacementPlugin(),  new HtmlWebpackPlugin({  template: ''./src/index.html''   })  ],  module: {  loaders: [{   exclude: /node_modules/,   test: /\.js?$/,   loader: ''babel''   }, {  test: /\.scss$/,  loader: ''style!css!sass''    }, {  test: /\.(png|jpg)$/,  loader: ''file-loader''  }] }, devServer: {  historyApiFallback: true,  contentBase: ''./dist'',  hot: true  }};

答案1

小编典典

我陷入类似的问题,发现您可以像其他任何require或import语句一样使用它url-loader来解析"url()"CSS中的语句。

要安装它:

npm install url-loader --save-dev

它将安装可以将解析路径转换为BASE64字符串的加载程序。

在您的webpack配置文件中,在加载器中使用url-loader

{  test: /\.(png|jpg)$/,  loader: ''url-loader''}

另外,请确保正确指定了公共路径以及要加载的图像的路径。

(23/24) webpack实战技巧:如何在webpack环境中使用Json

(23/24) webpack实战技巧:如何在webpack环境中使用Json

在webpack1或者webpack2版本中,若想在webpack环境中加载Json文件,则需要加载一个json-loader的loader进来的。但是在webpack3.x版本中,则不需要在另外引入了,也可使用Json。

下面以webpack3.x为例来说明在webpack中如何使用json。(主要是读取Json内容)

1. webpack中如何使用json

第一步:创建json数据

在根目录下新建一个config.json文件,里面新增如下内容:

{
  "name": "wfaceboss",
  "net": "www.wfaceboss.top"
}

第二步:现在我们的index.html模板中新增一个层,并给层一个Id属性。

便于在javascript代码中可以方便引用。

<div id="json"></div>

第三步:修改入口文件

src/entry.js文件中新增下面代码:

var json =require(''./../config.json'');
document.getElementById("json").innerHTML="name:"+json.name+"  site:"+json.site;

第四步:启动服务查看效果

若此节是根据前面的教程配置了热打包的,此时直接在终端使用npm run server启动即可,便可在浏览器上看到输出效果。若没有配置热打包,则需要先打包后启动服务。

打包指令:

npm run dev

启动服务指令:

npm run server

输出结果为:

arcgis在webpack中的使用

arcgis在webpack中的使用

因为dojo本身带有模块加载的功能,会与webpack本身有冲突,所以需要借助esriLoder。

安装

npm i esri-loader

使用esri-loader

esri-loader暴露了loadCss和loadModules两个方法,分别用来加载css和js文件。
引入

import { loadCss,loadModule } from ''esri-loader''

loadCss的使用

自动加载cdn上最新版本的arcgis的css

loadCss()

加载制定路径的arcgis的css

loadCss(''http://115.29.42.107:8686/410/esri/css/main.css'')

loadModules的使用

代替之前的dojo,传入需要的模块与配置项,返回一个promise对象,then中的参数为返回模块,示例:

import { loadModules } from ''esri-loader'';
 
// if the API hasn''t already been loaded (i.e. the frist time this is run)
// loadModules() will call loadScript() and pass these options, which,
// in this case are only needed b/c we''re using v3.x instead of the latest 4.x
const options = { version: ''3.28'' };
 
loadModules([''esri/map''], options)
  .then(([Map]) => {
    // create map with the given options at a DOM node w/ id ''mapNode''
    let map = new Map(''mapNode'', {
      center: [-118, 34.5],
      zoom: 8,
      basemap: ''dark-gray''
    });
  })
  .catch(err => {
    // handle any script or module loading errors
    console.error(err);
  });

option已知配置项:

option = {
    version: 4.7, // 在线加载js时使用选择版本号
    url: ''http://115.29.42.107:8686/410/init.js'', // 制定路径加载arcgis的js,需指向init.js的路径
    dojoConfig: {  // 配置dojo
        baseUrl: config.dojoUrl  // 需指向dojo目录
    }
}

如果你是在线使用最新的无需配置,需要在线使用某个版本配置version

如果你部署js的api,需要配置url和dojoConfig。

css – Webpack和Sass正确处理后台:url()图像但是当与webpack-dev-server一起使用时找不到它

css – Webpack和Sass正确处理后台:url()图像但是当与webpack-dev-server一起使用时找不到它

我正在使用Webpack 2和webpack-dev-server以及Sass加载器,实际配置:

{
    test: /\.scss/,loaders: [
        "style",{ loader: "css",query: { modules: false,sourceMap: true } },{ loader: "resolve-url" },{ loader: "sass",query: { sourceMap: true } }
    ]
}

这非常有效,背景中引用的图像:url()由webpack处理,并且在样式中替换为background-somehash.jpg,可以通过键入http:// localhost:8080 / background-来访问此文件. somehash.jpg.当我使用开发人员工具在样式背景定义中提供整个URL(包括localhost)时,它也有效…

唯一不起作用的是webpack生成的原始css,它看起来像background:url(background-somehash.jpg).我还试过各种网址,比如./,.. /,.. / .. /或./images/来试试root是否设置得有点不同.我没有得到的是该文件在根目录下可用…

编辑:
当与extract-text-webpack-plugin一起使用时,它将样式提取到单独的真实styles.css文件中,它可以正常工作.问题是为什么当从javascript包提供最终的css时它不起作用?

澄清:
一切都被正确引用,图像可用,当我使用extract-text-webpack-plugin将css提取到单独的文件中时,它只是在从bundle.js提供完全相同的css时才起作用,然后在index.html喜欢< link href =“blob:...”rel =“stylesheet”>

解决方法

你应该检查的事情:

引用的图像是否被webpack识别?

只需删除图像并检查webpack构建是否失败.如果是这种情况,那么您的加载程序配置不是问题.

使用浏览器开发人员工具检查请求的URL

如果请求以404终止:

>检查output.publicPath(webpack)/ contentBase(webpack-dev-server)是否指向同一位置.这是从浏览器的角度来看(=没有绝对文件路径)
>如果您使用的是<base>标记,则需要确保它确实正确替换了基本URL.

css – 在webpack中使用本地Web字体

css – 在webpack中使用本地Web字体

我正在尝试在我的React项目中使用一些本地Web字体.我将它们包含在我的main.scss文件中,并通过webpack加载它们.捆绑包构建正确,包括main.scss样式.我看到webpack加载了字体文件,并将它们复制到public / fonts /,但我的bundle文件找不到字体.

据我了解,你的@ font-face src应该与bundle的位置有关.我将此设置为与在webpack中加载字体的路径相同,’./ fonts /’.我看到的确切错误是:

file:///Users/myusername/Documents/folder1/folder2/folder3/APP/fonts/FoundersGroteskWeb-Regular.woff net::ERR_FILE_NOT_FOUND

我一直在尝试很多不同的路径配置,并且在webpack中使用了publicPath选项,但是我现在正在围绕看起来非常简单的引用错误.

文件结构:

APP
├──webpack.config.js
├──src
     ├──app
        ├──App.jsx
        ├──styles
           ├──main.scss
           ├──fonts
              ├──allthefonts.woff
     ├──public
        ├──bundle.js
        ├──fonts
           ├──allthefonts.woff

App.jsx:

require('./styles/main.scss');

main.scss:

@font-face {
    font-family: FoundersGrotesk;
    src: url('./fonts/FoundersGroteskWeb-Bold.eot') format('eot'),url('./fonts/FoundersGroteskWeb-Bold.woff') format('woff'),url('./fonts/FoundersGroteskWeb-Bold.woff2') format('woff2');
    font-weight: bold;
}

@font-face {
    font-family: FoundersGrotesk_Cnd;
    src: url('./fonts/FoundersGrotXCondWeb-Bold.eot') format('eot'),url('./fonts/FoundersGrotXCondWeb-Bold.woff') format('woff'),url('./fonts/FoundersGrotXCondWeb-Bold.woff2') format('woff2');
    font-weight: bold;
}

@font-face {
    font-family: FoundersGrotesk;
    src: url('./fonts/FoundersGroteskWeb-Regular.eot') format('eot'),url('./fonts/FoundersGroteskWeb-Regular.woff') format('woff'),url('./fonts/FoundersGroteskWeb-Regular.woff2') format('woff2');
    font-weight: normal;
}

webpack.config.js:

'use strict';

const webpack = require('webpack');
const PROD = JSON.parse(process.env.PROD_ENV || '0');

module.exports = {

  entry: './src/app/App.jsx',output: {
    path: './src/public/',filename: PROD ? 'bundle.min.js' : 'bundle.js'
  },module: {
    loaders: [
      {
        test: /\.jsx?$/,loader: 'babel-loader',exclude: '/node_modules/',query: {
          presets: ['es2015','react','stage-1']
        }
      },{
        test: /\.s?css$/,loaders: ['style','css','sass']
      },{
        test: /\.(eot|svg|ttf|woff|woff2)$/,loader: 'file-loader?name=./fonts/[name].[ext]'
      }
    ]
  }
};

解决方法

得益于@omerts在 this thread中获得了一个有效的解决方案.解决方案涉及使用publicPath.我一直试图用它作为module.exports中的一个选项,使用字体文件加载器,而不是输出.

更新了webpack.config.js:

const webpack = require('webpack');
const PROD = JSON.parse(process.env.PROD_ENV || '0');
const path = require('path');

const PATHS = {
  build: path.join(__dirname,'./src/public')
};

module.exports = {

  entry: './src/app/App.jsx',output: {
    path: PATHS.build,filename: PROD ? 'bundle.min.js' : 'bundle.js',publicPath: PATHS.build
  },loader: 'file-loader?name=/fonts/[name].[ext]'
      },{
        test: /\.(jpg|png)$/,loader: 'file-loader?name=/fonts/[name].[ext]'
      }
    ]
  },plugins: PROD ? [
    new webpack.optimize.UglifyJsPlugin({
      beautify: false,comments: false,compress: { 
        warnings: false,drop_console: true
      },mangle: {
        except: ['$'],screw_ie8: true,keep_fnames: false
      }
    })
  ] : []
};

关于如何在Webpack中使用CSS中的图像webpack css的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于(23/24) webpack实战技巧:如何在webpack环境中使用Json、arcgis在webpack中的使用、css – Webpack和Sass正确处理后台:url()图像但是当与webpack-dev-server一起使用时找不到它、css – 在webpack中使用本地Web字体等相关知识的信息别忘了在本站进行查找喔。

本文标签: