【发布时间】:2017-06-26 11:16:26
【问题描述】:
我正在使用带有 ReactJS 的 webpack,并试图弄清楚在 npm 安装之后如何使用 normalize.css (https://necolas.github.io/normalize.css/)。
Normalize.css 是否在 npm 安装后立即应用?如果我愿意,我将如何对其进行编辑?
提前谢谢你,一定会投票并接受答案
【问题讨论】:
标签: javascript html css npm webpack
我正在使用带有 ReactJS 的 webpack,并试图弄清楚在 npm 安装之后如何使用 normalize.css (https://necolas.github.io/normalize.css/)。
Normalize.css 是否在 npm 安装后立即应用?如果我愿意,我将如何对其进行编辑?
提前谢谢你,一定会投票并接受答案
【问题讨论】:
标签: javascript html css npm webpack
首先,从 GitHub 安装或下载 normalize.css。我建议下载它。然后,有两种主要的使用方法。
方法 1:使用 normalize.css 作为您自己项目的基础 CSS 的起点,自定义值以匹配设计要求。
方法 2:包含 normalize.css 并在其上构建,如有必要,稍后在 CSS 中覆盖默认值。
即只需将这些下载的文件放入项目文件夹并通过链接标签添加链接
link rel="stylesheet" type="text/css" href="normalize.css"
注意 href 内容应指向存储 normalize 的文件夹。
【讨论】:
一旦你 import 或 require 它将被 Webpack 包含,除非你将其设置为不包含。例如:
注意:我使用的是 Webpack 2。
module: {
rules: [ // from 'loaders' to 'rules'
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
{
test: /\.sass$/,
exclude: /node_modules/,
loader: ExtractTextPlugin.extract({
fallbackLoader: 'style-loader',
loader: ['style-loader','sass-loader']
})
}
]
}
exclude 属性会解决这个问题。
例子:
// public/assets/style.scss
@import 'substyle1';
@import 'substyle1';
body {
background-color: red;
}
// src/index.js -> entry file
import '../public/assets/style.scss';
// Webpack will know that you are importing your SCSS / SASS file
希望这会有所帮助。
【讨论】:
import 或require?我怎样才能编辑规范化表?
import 或require 在我的入口点通常index.js。然后 webpack 会处理剩下的事情。如果您想编辑normalize 表,那么您可以像在一个非常简单的项目中那样(直接编辑文件本身)
style.css 并将其导入到您的入口文件中,以使其可用于您的所有组件。
您可以通过以下方式将 npm 安装的 normalize.css 与 React 一起使用:
import React from 'react';
import ReactDOM from 'react-dom';
import 'normalize.css'; // Note this
const root = document.getElementById('root');
ReactDOM.render(<h1>Hello, World!</h1>, root);
结果将是:
请注意,文本已由normalize.css 设置样式。
要使其正常工作,您需要类似于以下设置:
1) 将上面的 Javascript 添加到 index.js
2) 将normalize.css(和朋友)添加到package.json:
{
"dependencies": {
"normalize.css": "^5.0.0",
"react": "^16.3.2",
"react-dom": "^16.3.2"
},
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.11",
"style-loader": "^0.21.0",
"webpack-dev-server": "^3.1.4",
"webpack": "^4.8.3"
}
}
3) 在webpack.config.js 中使用正确的加载器:
module.exports = {
mode: 'development',
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
options: { presets: ['env', 'react'] }
},
{
test: /\.css$/,
use: [{ loader: 'style-loader' }, { loader: 'css-loader' }]
}
]
}
};
4) 添加index.html 文件以查看结果:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="root"></div>
<script src="main.js"></script>
</body>
</html>
4) 安装一切
npm install
5) 启动 Webpack 开发服务器:
./node_modules/.bin/webpack-dev-server --open
注意:我使用的是5.0.0 的normalize.css 版本。如果您使用6.0.0 或更高版本,字体会有所不同。在该版本中,所有自以为是的规则都已从 normalize.css 中删除。
2018 年 5 月 17 日更新:更新为使用 Webpack 4 和 React 16。
【讨论】:
import 'normalize-css/normalize.css',只需导入'normalize.css 就会在当前目录中查找它
normalize-css 与 normalize.css 不同。 normalize-css 自 2014 年以来未更新:github.com/chrisdickinson/normalize-css
添加:如果您使用的是 WebPack 4,并且无法导入 normalize.less,请尝试 normalize.css。
@import "../node_modules/normalize.css/normalize.css";
还有我的规则:
module: {
rules: [{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader,
"css-loader"
]
},
{
test: /\.less$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
"less-loader"
]
}
]
};
【讨论】:
在 index.css 中:
@import "~normalize.css/normalize.css";
【讨论】: