- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Next.js
用于 React 应用程序的服务器端呈现(使用 styled-components
)并且我使用 Babel 插件显示我在代码中使用的组件的名称。
这是我的 .babelrc
文件:
{
"env": {
"development": {
"presets": ["next/babel"],
"plugins": [
[
"babel-plugin-styled-components",
{
"ssr": true,
"displayName": true,
"preprocess": false
}
]
]
},
"production": {
"presets": "next/babel",
"plugins": [
[
"babel-plugin-styled-components",
{
"displayName": false,
"ssr": true
}
]
]
},
"test": {
"presets": [
[
"env",
{
"modules": "commonjs"
}
],
"next/babel"
]
}
}
}
当我运行时 cross-env NODE_ENV=development concurrently "tsc --watch" next
我得到这些行 - 意思是 .babelrc
在编译期间使用:
[1] > Using external babel configuration
[1] > Location: "...../.babelrc"
[1] > Using "webpack" config function defined in next.config.js.
但是一旦我转到开发工具并看到一些 styled-component
我可以看到这个:class="sc-iyvyFf gGaJAt"
但是在我的代码中我有这个定义:
const Title = styled.div`
font-size: 40px;
line-height: 1.13;
`
从documentation example 看来- 我应该得到类似 ... <button class="Button-asdf123 asdf123" /> instead of just <button class="asdf123" />.
的东西但我没有。
深入了解后我发现了这个 issue ( https://github.com/styled-components/styled-components/issues/1103#issuecomment-324302997 ) 基于我在浏览器控制台中得到的错误:
It seems that only the server code is being transpiled and not the client code 😉
所以问题:如何测试babel是否正常工作以及.babelrc
所有地方都在使用?
P.S. 在我的例子中,我在客户端获得的那些类有这个前缀 sc-
我脑子里的意思styled-components
.所以我不确定插件是否来自 .babelrc
完全有效或有效,但我没有在样式化组件的声明中设置任何特殊属性,因此获得此通用前缀 sc-
更新这是我正在使用的自定义 next.conf.js
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')
const { ANALYZE } = process.env
const path = require('path')
module.exports = {
exportPathMap: function() {
return {
'/': { page: '/' }
}
},
webpack: function(config) {
if (ANALYZE) {
config.plugins.push(
new BundleAnalyzerPlugin({
analyzerMode: 'server',
analyzerPort: 8888,
openAnalyzer: true
})
)
}
config.resolve.alias = {
'styled-components': path.resolve('./node_modules/styled-components/')
}
return config
}
}
最佳答案
不幸的是,之前似乎没有人回答过这个问题;
您所看到的可能归结为您发布的这段代码:tsc --watch
如果您在 Babel 之前执行 TypeScript 转译并将其留给 TypeScript 转译为 ES5,它会转译所有标记的模板文字,而不会给我们的插件任何 Hook 。
因为您已经在使用 next.js,所以您不需要从头开始设置您的 Babel 管道。相反,您只需要在 TypeScript 中禁用这种类型的转译。
我建议您将 tsconfig.json
中的 target
设置为 ESNext
,这样一切都交给 Babel。
https://www.typescriptlang.org/docs/handbook/compiler-options.html (参见“--target”)
关于javascript - 如何测试 babel 是否工作以及我的插件是否被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48076054/
我正在为我的 React 项目设置 Webpack,并对 babel 感到困惑, babel-core , babel-loader , babel-preset-2015和babel-preset-
所有这些 babel 依赖项是什么?它们各自的用途是什么,它们有何不同?我应该为我的 nodejs 网络应用程序使用哪一个? 我已经查看了 API 网站,但是否有任何指南可以将这些内容转化为简单的人类
我的 Node Webpack 项目使用了三个 babel 库。它们之间有什么区别以及如何使用它们? "dependencies": { "babel-runtime": "^5.8.24" }
我用 @babel/core 替换了 babel-core 而 babel-loader 期望 babel-core: { "name": "myproject-ui", "version":
我尝试配置一个环境来使用 babel 和 webpack 开发 javascript。 但是我不明白关于presets的babel配置. 在 Usage Guide ,我们可以看到预设为 "@babe
我已经安装了 babel 7.5,理想情况下它应该以 preset-env 包为目标,但不确定它为什么要寻找“babel-preset-es2015”。 你们能告诉我我做错了什么吗?下面是我的代码 p
我正在更新a boilerplate中使用的babel包,从 babel-core、babel-register 等到@babel/core、@babel/register > 等 问题:在 npm
设置 通天塔 6 (^6.0.0), Node 5.4.0,Express 4.13.x, babel-node 和 babel-register 都有警告,禁止在生产环境中使用babel.io 网站
我正在尝试转换编译我的 react/es6 代码并且来自 browserify。由于新的 babel 6 版本以及大多数教程现在已经过时的事实,我正在努力创建一个 webpack 构建。这适用于我的
我有一个使用 Typescript 和 @babel/preset-env 的项目。与 Webpack 捆绑失败并显示此错误和以下配置。 如果我取消注释该行,这会强制 @babel/plugin-pr
我在浏览器中使用 babel -> babel-standalone 现在我想使用 ES decorator 语法。但是所有的通天塔doc intro 是服务器端的 babel,比如 ` { "p
我正在编写对从 cdnjs.com 引入的所有这些库的 react 。但是,我发现它报告错误:'Uncaught TypeError: Cannot read property 'keys' of u
我正在使用 babel v7.6.x 并设置了以下内容。 包.json "scripts": { "dev": "nodemon --exec babel-node bin/index.js
我正在学习巨大的 JavaScript 生态系统,但我无法理解以下内容。 Babel 是一个编译器,来自官网: Babel is a toolchain that is mainly used to
在我使用yarn add -D babel-plugin-react-relay安装relay-query插件后,并在运行开发服务器后,我收到此错误: Error: [BABEL] /Users/ne
我使用 babel 6 和 React 插件,并按照文档说明设置转译过程。我已经阅读过要让 React 工作,我需要使用 es2015 和 React preset。最初,使用这两个预设一切都运行良好
我对 Babel 选项/配置有点迷失。我想使用最新的 js 功能并编译(使用 webpack)为浏览器代码。 babel-polyfill 和有什么区别和 babel plugins与 babel-p
这个问题在这里已经有了答案: Babel file is copied without being transformed (10 个答案) 关闭 6 年前。 我只是使用 npm (npm inst
安装时 npm install browserify babelify babel-preset-es2015 我正面临以下警告信息 npm WARN deprecated babel-preset-
什么版本的标准? 12.0.1 什么操作系统、Node.js 和 npm 版本? 视窗 10, 节点 v10.15.1, NPM v.6.8.0 你期望会发生什么? 我在 devDependencie
我是一名优秀的程序员,十分优秀!