在这里,我们将给大家分享关于如何在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)
- (23/24) webpack实战技巧:如何在webpack环境中使用Json
- arcgis在webpack中的使用
- css – Webpack和Sass正确处理后台:url()图像但是当与webpack-dev-server一起使用时找不到它
- css – 在webpack中使用本地Web字体
如何在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
在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中的使用
因为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一起使用时找不到它
{ 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字体
据我了解,你的@ 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]' } ] } };
解决方法
更新了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字体等相关知识的信息别忘了在本站进行查找喔。
本文标签: