首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用webpack从node_modules加载静态CSS文件的示例?

如何使用webpack从node_modules加载静态CSS文件的示例?
EN

Stack Overflow用户
提问于 2015-12-16 20:08:19
回答 2查看 20.2K关注 0票数 18

我不知道如何从node_modules库中加载leaflet/dist/leaflet.css,例如我安装了leaflet,但每次尝试加载CSS都会失败。

你能提供如何从node_modules加载静态样式的例子吗?

下面是我目前的webpack配置。此外,我正在使用extract-text-webpack-pluginsass-loader我的项目scss文件工作良好,我也有css-loader,我有解析静态css文件或添加到stylePathResolves的东西

代码语言:javascript
复制
//require('leaflet/dist/leaflet.css');

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

var stylePathResolves = (
  'includePaths[]=' + path.resolve('./') + '&' +
  'includePaths[]=' + path.resolve('./node_modules')
)

module.exports = {
  entry: ".js/app.js",
  output: {
    path: "./static/js",
    filename: "app.js"
  },
  module: {
    loaders: [{
        test: /\.jsx?$/,
        exclude: /node_modules/,
        loader: 'babel'
      }, {
        test: /\.scss$/,
        loader: ExtractTextPlugin.extract(
          'style',
          'css' + '!sass?outputStyle=expanded&' + stylePathResolves
        )
      }
    ]
  },
  plugins: [new ExtractTextPlugin("app.css")]
};

在哪里加载leaflet.css,注释掉了require('leaflet/dist/leaflet.css')给我的以下错误:

代码语言:javascript
复制
home/myproj/node_modules/leaflet/dist/leaflet.css:3
.leaflet-map-pane,
^

SyntaxError: Unexpected token .
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-17 07:18:32

对于遇到类似问题的用户,我已经做了一些步骤来让它工作,我不确定这种平衡的方式。

通过以下方式更改main app.js

  • change webpack.config.js中的
  1. npm install file-loader --save
  2. add import 'leaflet/dist/leaflet.css';

添加css-loader以摆脱SyntaxError: Unexpected token .,然后添加file-loader和匹配文件以摆脱Uncaught Error: Cannot find module "./images/layers.png"

代码语言:javascript
复制
module.exports = {
  entry: "./web/static/js/app.js",
  output: {
    path: "./priv/static/js",
    filename: "app.js"
  },
  module: {
    loaders: [{
      test: /\.jsx?$/,
      exclude: /node_modules/,
      loader: 'babel'
    }, {
      test: /\.scss$/,
      loader: ExtractTextPlugin.extract(
        'style',
        'css' + '!sass?outputStyle=expanded&' + stylePathResolves
      )
    }, {
      test: /\.css$/,
      loader: "style-loader!css-loader"
    }, {
      test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
      loader: 'file-loader'
    }]
  },
  plugins: [new ExtractTextPlugin("app.css")]
};

在开始的时候,我从一些例子中得到了这个配置,它不是100%清楚为什么我使用ExtractTextPlugin来加载scs,以及与css-loader有什么关系,也许为了更连贯,我应该在这部分也使用ExtractTextPlugin,也许有人知道,可以审查代码吗?但我的解决方案是有效的,我可以进一步工作。

票数 13
EN

Stack Overflow用户

发布于 2018-09-09 14:18:13

我不得不这样做:

代码语言:javascript
复制
npm install --save-dev style-loader css-loader file-loader

如果我没有为图像配置文件加载器,我会得到:

代码语言:javascript
复制
ERROR in ./node_modules/leaflet/dist/images/layers-2x.png 1:0
Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)
 @ ./node_modules/leaflet/dist/leaflet.css (./node_modules/css-loader!./node_modules/leaflet/dist/leaflet.css) 7:8888-8921
 @ ./node_modules/leaflet/dist/leaflet.css
 @ ./src/view/component/RouteMap.js
 @ ./src/index.js

ERROR in ./node_modules/leaflet/dist/images/layers.png 1:0
Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)
 @ ./node_modules/leaflet/dist/leaflet.css (./node_modules/css-loader!./node_modules/leaflet/dist/leaflet.css) 7:8716-8746
 @ ./node_modules/leaflet/dist/leaflet.css
 @ ./src/view/component/RouteMap.js
 @ ./src/index.js

ERROR in ./node_modules/leaflet/dist/images/marker-icon.png 1:0
Module parse failed: Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.
(Source code omitted for this binary file)
 @ ./node_modules/leaflet/dist/leaflet.css (./node_modules/css-loader!./node_modules/leaflet/dist/leaflet.css) 7:9975-10010
 @ ./node_modules/leaflet/dist/leaflet.css
 @ ./src/view/component/RouteMap.js
 @ ./src/index.js

您还必须将CSS文件导入到您的 main.jsmain.js(或主JS文件的任何名称)中。否则,您会收到一条错误消息,指出 module.exports is read-only__.

代码语言:javascript
复制
import 'leaflet/dist/leaflet.css';

更新的webpack.config.js代码片段是:

代码语言:javascript
复制
{
    ...
    module: {
        rules: [
            { test: /\.css$/, use: ["style-loader","css-loader"] },
            { test: /\.(png|svg|jpe?g|gif|woff2?|ttf|eot)$/, use: [ 'file-loader' ] },
        ],
    },
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34311656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档