我想在用Typescript编写的React应用程序中将css-
loader与webpack的’modules’选项一起使用。这个例子是我的起点(他们使用Babel,webpack和React)。
webpack配置
var webpack=require('webpack');
var path=require('path');
var ExtractTextPlugin=require("extract-text-webpack-plugin");
module.exports={
entry: ['./src/main.tsx'],
output: {
path: path.resolve(__dirname, "target"),
publicPath: "/assets/",
filename: 'bundle.js'
},
debug: true,
devtool: 'eval-source-map',
plugins: [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({minimize: true})
],
resolve: {
extensions: ['', '.jsx', '.ts', '.js', '.tsx', '.css', '.less']
},
module: {
loaders: [
{
test: /\.ts$/,
loader: 'ts-loader'
},
{
test: /\.tsx$/,
loader: 'react-hot!ts-loader'
}, {
test: /\.jsx$/,
exclude: /(node_modules|bower_components)/,
loader: "react-hot!babel-loader"
},
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: "babel-loader"
}, {
test: /\.css/,
exclude: /(node_modules|bower_components)/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss-loader')
}
]
},
plugins: [
new ExtractTextPlugin("styles.css", {allChunks: true})
],
postcss: function() {
return [require("postcss-cssnext")()]
}
}
这是我想用随附的CSS文件设置样式的React组件:
import React = require('react');
import styles = require('../../../css/tree.css')
class Tree extends React.Component<{}, TreeState> {
...
render() {
var components = this.state.components
return (
<div>
<h3 className={styles.h3} >Components</h3>
<div id="tree" className="list-group">
...
</div>
</div>
)
}
}
export = Tree
tree.css
.h3{
color: red;
}
说明无论我在做什么(试图改变进口语法,试图声明“要求”为TS-装载机,在这里,我总是得到:
未捕获的错误:找不到模块“ ../../../css/tree.css”
在运行时
错误TS2307:找不到模块“ ../../../css/tree.css”。
由TS编译器。发生了什么?在我看来,css-loader甚至没有发出ICSS?还是ts-loader出现错误?
import
对TypeScript具有特殊意义。这意味着TypeScript将尝试加载并了解正在导入的内容。正确的方法是require
像您提到的那样进行定义,var
而不是import
:
var styles = require('../../../css/tree.css')`
问题内容: 我正在尝试将一个非常基础的项目与React,TypeScript和Webpack整合在一起。编译时,我从以下位置的文件夹中收到以下错误(为了简便起见,我删除了堆栈跟踪和项目路径): 我尝试卸载TypeScript并将其替换为Babel来转换JSX,并得到了相同的错误。 安装固定好了。 我已经尝试过的每一个组合,并在得到的打字稿同样的结果,但无法得到任何工作。 如何使Webpack,Ty
问题内容: 根据Dan Abramov 的推文,CSS模块支持位于create- react-app(CRA)中。只需扩展其样式表即可启用该功能,但这对我不起作用。我的版本为1.1.4 。如何使用CRA启用CSS模块?谢谢 问题答案: 您无需弹出。 从版本2开始,Create React App就立即支持CSS模块,该版本现已稳定。 通过运行或升级到v2()。 您只需要创建带有扩展名的文件 例如:
问题内容: 我有一个带有ES6编写的组件的React应用程序-通过Babel和Webpack进行了编译。 在某些地方,我想包含特定CSS文件和特定组件,如react webpack手册中 所建议 但是,如果在任何组件文件中,我都需要静态CSS资产,例如: 然后编译失败并显示错误: 看来,如果我尝试在Component文件中要求CSS文件,那么Babel加载程序会将其解释为另一个来源,并尝试将CS
问题内容: 我是webpack的新手,我发现在生产版本中我们可以减少整体代码的大小。目前,webpack构建大约8MB的文件,而main.js构建大约5MB的文件。如何减少生产构建中的代码大小?我从互联网上找到了一个样本webpack配置文件,并为我的应用程序进行了配置,然后运行并开始构建它,并在目录中生成了一些文件。 这些文件仍然很重(与开发版本相同) 如何使用这些文件?目前,我正在使用webp
我用 react 写了一个页面,在这个页面里有几个模块,其中一些模块都有 a 标签,比如 footer.jsx 我想实现的是,当点击这里的 blog 或者 help 后会访问对应的页面,blog 访问 /blog,help 访问 /help。 然后在各自的页面里,可以重定向到其它的页面去,比如 blog -> /blog -> https://blog.domain.com help -> /he
继幸存的JS电子书我试图设置我的ReactJS项目webpack配置。 在运行我的开始脚本时,我得到以下错误: ./app/index.js模块解析失败时出错:/Users/shooste/PersonalProjects/surviveJS/node_modules/eslint loader/index.js/Users/shooshte/PersonalProjects/surviveJS/