我正在编写一个使用Webpack的客户端应用程序,我无法弄清楚如何要求materialize-css包.我正在使用Henrik Joreteg的hjs-webpack包,并且通过在sass文件(例如@import 'yeticss')中导入包含了nic包,但这不适用于实现.import 'materialize-css'像任何其他包一样直接在代码中(例如在JS文件中)也不起作用.
我们有一个Angular 4我最近尝试升级到的项目Angular 8。我遵循了Angular网站上的迁移指南,更改了某些语法,并且阻止了项目的构建。我遇到了我的样式无法在本地正确加载并且根本不在Azure上加载的问题。我找到Webpack并尝试配置它,添加了style-loader,sass-loader和css-loader。现在,当我在本地运行时,可以在浏览器的“网络”选项卡中看到所有样式均已正确加载,但它仅加载默认的index.html文件,而没有引导应用程序。
当我在Azure上部署应用程序时,它会加载其他组件,但是没有一种样式会加载。我花了3周的时间进行迁移,但仍然没有希望。
工具/插件版本:
Angular CLI: 8.3.5
Node: 10.15.1
OS: win32 x64
Angular: 8.2.7
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... platform-server, router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.803.5
@angular-devkit/build-angular 0.803.5
@angular-devkit/build-optimizer 0.803.5
@angular-devkit/build-webpack 0.803.5
@angular-devkit/core 8.3.5
@angular-devkit/schematics 8.3.5
@angular/cdk 8.2.0
@angular/cli 8.3.5
@angular/http 5.2.11
@angular/material 8.2.0
@ngtools/webpack 8.3.5
@schematics/angular 8.3.5
@schematics/update 0.803.5
rxjs 6.5.3
typescript 3.5.3
webpack 4.40.2Run Code Online (Sandbox Code Playgroud)
这是我的Webpack配置:
const { resolve } = require('path');
const rxPaths = …Run Code Online (Sandbox Code Playgroud)webpack webpack-style-loader angular-upgrade angular angular8
我正在尝试修改使用 shadow root 创建的 web 组件的样式。
我看到样式被添加到head标签中,但它对shadow root封装没有影响。
我需要的是加载所有组件的样式并使它们在shadow root.
这是创建 Web 组件的一部分:
索引.tsx
import React from 'react';
import ReactDOM from 'react-dom';
import { App } from './App';
import './tmp/mockComponent.css'; // This is the styling i wish to inject
let container: HTMLElement;
class AssetsWebComponent extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
const { shadowRoot } = this;
container = document.createElement('div');
shadowRoot.appendChild(container);
ReactDOM.render(<App />, container);
}
}
window.customElements.define('assets-component', AssetsWebComponent);
Run Code Online (Sandbox Code Playgroud)
App.ts // 常规反应组件 …
我不知道如何使用webpack从node_modules libs加载任何CSS,例如我安装了传单,每次加载尝试都leaflet/dist/leaflet.css失败了.
你能举例说明如何从node_modules加载静态样式吗?
我目前的webpack配置如下.另外我正在使用extract-text-webpack-plugin和sass-loader我的项目scss文件运行良好,我也css-loader有,我有解决静态CSS文件或添加一些东西stylePathResolves?
//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: …Run Code Online (Sandbox Code Playgroud) 如何让 React 组件的 CSS 在影子根中工作,同时保持 CSS Modules 类的封装优势?我想插入每个组件的<style>元素而不是内部<head>或另一个任意元素。
我目前正在 React 中使用带有自定义 Webpack 脚本的 CSS 模块;[style-loader, css-loader, sass-loader]以传统方式。生成的编译后的 CSS 作为<style>标签注入head.
// MyComponent.jsx
import React from 'react';
import styles from './MyComponent.scss';
export const MyComponent = () => {
return <div className={styles.container}>Hello!</div>
}
// MyComponent.scss
.container {
background: purple;
}
Run Code Online (Sandbox Code Playgroud)
<!-- rendered page -->
<head>
...
<style>.myComponent__container__hash123 { background: purple }</style>
</head>
<body>
...
<div class="myComponent__container__hash123">Hello!</div>
</body>
Run Code Online (Sandbox Code Playgroud)
为了在影子根内部使用,我想将每个组件的编译 CSS …
shadow-dom reactjs webpack webpack-style-loader react-css-modules
我试图用Webpack做一个简单的Bootstrap和Font-awesome.我设法加载Bootstrap CSS但Font-awesome无法正常工作.
这就是我得到的结果:
我的代码如下.我在这做什么错了?
资源:这里有Github代码.
的package.json
{
"name": "",
"version": "0.0.1",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack -w"
},
"license": "MIT",
"devDependencies": {
"css-loader": "^0.21.0",
"expose-loader": "^0.7.0",
"file-loader": "^0.8.4",
"style-loader": "^0.13.0",
"url-loader": "^0.5.6",
"webpack": "^1.12.2"
},
"dependencies": {
"admin-lte": "^2.3.2",
"bootstrap": "^3.3.5",
"bootstrap-webpack": "0.0.5",
"exports-loader": "^0.6.2",
"extract-text-webpack-plugin": "^0.8.2",
"font-awesome": "^4.4.0",
"font-awesome-webpack": "0.0.4",
"imports-loader": "^0.6.5",
"jquery": "^2.1.4",
"less": "^2.5.3",
"less-loader": "^2.2.1"
}
}
Run Code Online (Sandbox Code Playgroud)
入口点: …
javascript font-awesome twitter-bootstrap-3 webpack webpack-style-loader
我强调试图让Uglify与我的项目合作,以前我使用过Uglify并没有给出问题,但现在我觉得这与SASS有关.
ERROR in ./~/css-loader!./~/sass-loader!./app/scss/global-header.scss
Module build failed: TypeError: Cannot read property '4' of undefined
at reduce (/Users/contractor/centralefcom-global-components/node_modules/postcss-reduce-transforms/dist/index.js:121:23)
at walk (/Users/contractor/centralefcom-global-components/node_modules/postcss-value-parser/lib/walk.js:7:22)
at ValueParser.walk (/Users/contractor/centralefcom-global-components/node_modules/postcss-value-parser/lib/index.js:18:5)
at /Users/contractor/centralefcom-global-components/node_modules/postcss-reduce-transforms/dist/index.js:131:75
at /Users/contractor/centralefcom-global-components/node_modules/postcss/lib/container.js:92:28
at /Users/contractor/centralefcom-global-components/node_modules/postcss/lib/container.js:73:26
...
...
Run Code Online (Sandbox Code Playgroud)
此错误重复多次,每个多个包一个.
这是我的webpack配置.
var webpack = require('webpack')
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');
module.exports = {
context: __dirname,
resolve: {
modulesDirectories: ['node_modules', 'bower_components']
},
entry: {
'all': [
'./app/global-all.js',
'./app/scss/global-all.scss'
],
'footer': [
'./app/global-footer.js',
'./app/scss/global-footer.scss'
],
'header': [
'./app/global-header.js',
'./app/scss/global-header.scss'
],
'footer.nodeps': [
'./app/global-footer-nodeps.js', …Run Code Online (Sandbox Code Playgroud) javascript uglifyjs webpack webpack-style-loader html-webpack-plugin
我有这样的目录结构:
和node_modules内:
>node_modules
>./bin
>webpack.config.js
>bootstrap
>bootstrap.css
>bootstrap.js
Run Code Online (Sandbox Code Playgroud)
我需要像这样生成单独的CSS和JS包:
custom-styles.css,custom-js.js,style-libs.css,js-libs.js
where style-libs和js-libsshould应该包含所有库的syles和js文件,如bootstrap和jQuery.这是我到目前为止所做的:
webpack.config.js:
const path = require('path');
const basedir = path.join(__dirname, '../../client');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const stylesPath = path.join(__dirname, '../bootstrap/dist/css');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
watch: true,
// Script to bundle using webpack
entry: path.join(basedir, 'src', 'Client.js'),
// Output directory and bundled file
output: {
path: path.join(basedir, 'dist'),
filename: 'app.js'
},
// Configure module loaders (for JS ES6, JSX, etc.)
module: {
// Babel …Run Code Online (Sandbox Code Playgroud) 有一些关于style-loaderand 的SO 帖子css-loader,但尽管如此,我还是无法找到解决我的问题的方法。
简而言之,当我@import css在其他css文件中归档时,导入的css包含url()具有相对路径的 s 时,路径解析不正确。
基本上,错误消息表明 Webpack 最终认为url()导入的 css 中的路径是相对于src(主入口点),而不是相对于css它导入的文件:
// css-one.scss
@import "./assets/open-iconic-master/font/css/open-iconic-bootstrap.css";
// open-iconic-bootstrap.css
@font-face {
src: url('../fonts/open-iconic.eot');
}
Run Code Online (Sandbox Code Playgroud)
错误:
./src/main.scss 中的错误 (./node_modules/css-loader??ref--5-1!./node_modules/postcss-loader/src??ref--5-2!./node_modules/sass- loader/lib/loader.js??ref--5-3!./src/main.scss)
模块未找到:错误:无法解析'../fonts/open-iconic.eot'在 'C:\用户\ ... \ src'中 @ ./src/main.scss (./node_modules/css- loader??ref--5-1!./node_modules/postcss-loader/src??ref--5-2!./node_modules/sass-loader/lib/loader.js??ref--5-3! ./src/main.scss) 7:106-141 7:172-207 @ ./src/main.scss @ ./src/index.js
我试过的:
convertToAbsoluteUrls在 style-loader 中使用该标志我的 Webpack 配置文件(加载程序在底部):
// css-one.scss …Run Code Online (Sandbox Code Playgroud)有没有办法让 Vue.js 正确地与 CSP 一起工作?
当我运行我的spa应用程序(由npm run generateNuxt.js 生成)时,我会收到几个警告,例如:
拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src 'self' 'strict-dynamic' 'nonce-124lk5fjOc4jn7qqLYEsG2jEvxYuqu8J' 'unsafe-inline' https:”。请注意,如果源列表中存在哈希值或现时值,则忽略 'unsafe-inline'。
知道CSP,有两种正确的方法可以解决这个问题:
使用 nonces,其中 Vue.js 必须使用nonce属性对所有生成的脚本和样式进行签名。但我认为这不会解决任何问题,因为它似乎内联添加了一些 CSS。
使用散列,这实际上是这样做的首选方式,因为散列准确地保护了我们希望客户端在浏览器上执行的内容。
但是,为了使用哈希,Vue.js/Webpack 必须能够计算其所有脚本和样式的哈希,并且:
或者,
Vue.js 是否以任何方式支持这一点?世界上有没有人能够让 CSP 与 Vue.js 一起工作而没有任何“不安全的内联”?
content-security-policy webpack vue.js webpack-style-loader nuxt.js
webpack ×10
css ×4
javascript ×4
reactjs ×3
shadow-dom ×2
angular ×1
angular8 ×1
css-loader ×1
font-awesome ×1
materialize ×1
npm ×1
nuxt.js ×1
uglifyjs ×1
vue.js ×1