我在使用mocha和babel编译器运行istanbul时遇到了一些问题.
我的所有测试都运行得很好,但在完成所有测试后,它会向我显示以下消息:
No coverage information was collected, exit without writing coverage information
而且它没有制作任何报道报道..
我正在运行的命令是:
NODE_ENV=test istanbul cover _mocha -- --require babel-core/register --recursive
该项目托管在github:https: //github.com/weslleyaraujo/react-flux-puzzle/tree/feat/unit-tests-24
任何想法可能是什么?
我正在使用"使用严格"的函数形式,并且不希望Babel在翻译后添加的全局形式.问题是我使用的是一些没有使用"use strict"模式的库,并且在脚本连接后可能会抛出错误
我正在学习React,我想我很了解它.然而,有一件事困扰我关于开发强大的React应用程序 - 开发人员使用什么工具进行静态类型检查?
我非常喜欢TypeScript.由于类型检查和其他简洁的功能,我认为它可以减少开发JavaScript应用程序的痛苦.Visual Studio Code还提供了非常好的代码完成.我知道,我可以把它与利用工作做出反应分型 + DenifitelyTyped.
问题是,关于使用React + TypeScript的教程并不多.似乎也没有很多关于使用这个组合进行开发的文章.另一方面,许多人似乎正在使用Flow,这是一个由Facebook支持的项目(我猜他们也使用它).
我已经设法找到关于Reddit的讨论,其中有关于使用React + TypeScript/React + Flow方式的优点和缺点.然而,对我来说,它似乎已经过时了,因为它现在已经有10个月了.我认为从那以后发生了很多变化.
我还发现了两篇关于使用React + Flow和React + TypeScript的文章.作者陈述了他在使用这两个选项时遇到的一些问题,并得出结论:TypeScript是"现在最好的选择"(2015年11月),特别是因为Flow项目有很多问题并且从Facebook获得的开发人员活动很少.他还提到它与巴贝尔不相称?
所以,我想的问题是:是否可以安全使用做出反应+打字稿组合,否则我会碰到一些困难?Flow怎么样?我应该检查一些其他类似的工具吗?你会推荐哪种方法?
2017年9月更新:
拥有超过一年的日常使用TypeScript经验,并在一段时间内使用Flow,我得出以下结论:
TL; DR:如果您打算使用任何类型检查器,我建议使用Flow.
2019年2月更新:
我相信上面的建议已经过时,不再相关.三个原因:
因此,我认为TypeScript比2019年的Flow更加务实.
至于是否值得使用任何类型的检查器,我会说这取决于项目的大小.小项目可能不需要它.
我在客户端用Babel编译器在ES6中编写了同构应用程序.我希望我的快速服务器具有与客户端代码相同的ES6语法.
不幸的是require('babel/register')不起作用..
require('babel/register'); // doesn't work
// require('babel-core/register); doesn't work..
const env = process.env.NODE_ENV || 'development';
const port = process.env.NODE_PORT || 1995;
const http = require('http');
const express = require('express');
const address = require('network-address');
let app = express();
app.set('port', port);
app.use(express.static(path.join(__dirname, 'public')));
app.get('*', (req, res) => {
res.send('Hello!');
});
http.createServer(app).listen(app.get('port'), function () {
console.info('Demo app is listening on "%s:%s" env="%s"', address(), app.get('port'), env);
});
Run Code Online (Sandbox Code Playgroud) 我试图用Webpack的Uglify插件删除console.logs,但似乎与Webpack捆绑的Uglify插件没有该选项,它在文档中没有提到.
我正在从webpack初始化uglify,如下所示: new webpack.optimize.UglifyJsPlugin()
我的理解是我可以使用独立的Uglify lib来获取所有选项,但我不知道哪一个?
问题是drop_console不起作用.
我看到babel.js装饰器(在"第1阶段"中可用)在https://github.com/wycats/javascript-decorators上实现了规范.看起来装饰器仅限于(1)类,(2)访问器和(3)方法.在我的例子中,我想在普通的旧函数上使用装饰器,如
@chainable
function foo() { }
Run Code Online (Sandbox Code Playgroud)
在哪里(只是一个例子)
function chainable(fn) {
return function() {
fn.apply(this, arguments);
return this;
};
}
Run Code Online (Sandbox Code Playgroud)
我没有看到装饰器不能应用于函数的任何逻辑原因.我的问题是,有没有办法实现这一目标?还是有一些很好的理由为什么功能无法装饰?
事实证明,在https://github.com/wycats/javascript-decorators/issues/4上存在一个问题.
javascript decorator babeljs ecmascript-next javascript-decorators
我知道TypeScript用于编写Angular2,这对于想要进入Angular2的人来说可能是一个更好的选择,但是当我看到Babel时,它看起来非常像TypeScript.
我注意到很多知名公司都坚持巴贝尔.
一些问题:
是否有使用ES6或ES7或babel的语法,这将允许我轻松地将许多子文件组捆绑在一起?
例如,给出:
./action_creators/index.js
./action_creators/foo_actions.js
./action_creators/bar_actions.js
Run Code Online (Sandbox Code Playgroud)
让index.js导入foo和bar动作,然后重新导出它们,所以我可以
import {FooAction, BarAction} from './action_creators/index.js'
Run Code Online (Sandbox Code Playgroud)
如果我要更改我自己组织对象的文件,我不想记住/更改引用.
在我的构建步骤中,我使用babel将代码转换为es5(从src到dist).如何使其排除以.test.js?结尾的文件?
的package.json
"scripts": {
"build": "babel src --out-dir dist",
Run Code Online (Sandbox Code Playgroud)
.babelrc
{
"presets": [ "es2015" ],
"ignore": "\\.test\\.js"
}
Run Code Online (Sandbox Code Playgroud) 这是我在package.json文件中的jest配置:
"jest": {
"automock": false,
"browser": true,
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "./app/tests/mocks/FileMock.js",
"\\.(css|less)$": "identity-obj-proxy"
},
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleDirectories": [
"node_modules"
],
"transform": {
"^.+\\.jsx?$": "./node_modules/babel-jest",
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "./app/tests/mocks/FileTransformer.js"
},
"testEnvironment": "jsdom",
"testPathDirs": [
"./app/tests"
],
"testRegex": ".*.test.js",
"verbose": true
}
Run Code Online (Sandbox Code Playgroud)
和.babelrc文件位于我的根文件夹中:
{
"plugins": ["syntax-dynamic-import", "transform-runtime"],
"presets": [
[
"es2015",
{
"modules": false
}
],
"react",
"stage-0"
],
"env": {
"start": {
"presets": [
"react-hmre"
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据在开玩笑的入门页面上找到的文档,这是我需要让babel工作的所有东西.
无论如何,这个测试:
import React from 'react';
import …Run Code Online (Sandbox Code Playgroud) babeljs ×10
javascript ×6
node.js ×3
reactjs ×3
ecmascript-6 ×2
typescript ×2
decorator ×1
express ×1
flowtype ×1
istanbul ×1
jestjs ×1
jshint ×1
mocha.js ×1
uglifyjs ×1
use-strict ×1
webpack ×1