继续上节的问题,ts中使用Promise等特性,tsc会自动加上profill吗?答案是不会。
babel不需要依赖ts-loader。 只有babel-loader是不够的,我们还需要借助预设,类似于preset-env一样,react,或者ts都有自己的预设 官网说了推荐使用预设。使用 打包后 打包成功。 加上Promise试试。 没有转化,为什么呢?按道理babel通过预设进行转化时,是会加上Profill的。 原因: 当我们的useBuiltIns设置为entry时,是需要引入两个包的。而且开发过程中很多时候都是用usage的, 打包 可以看到这次的代码跟上次的截然不同,加上profill了。 别忘记加上exclude,因为有些库自己实现了ts的转化,我们不需要插手。
babel-loader优点是帮我们加上了profill。缺点是,不会对我们的代码进行类型校验。 ts-loader是会对类型进行检测的。 这里虽然报错了,但是用babel-loader还是能正常打包的,但是如果使用ts-loader的话,就会报错,打包失败。 那我们希望既要有profill,也要有类型检测。 ts官网也提示我们,可以使用Babel进行转化,然后使用tsc进行类型检测。 怎么使用呢。 我们可以在build之前,先用tsc进行检测。 可以看到已经检测出来了,我们改完再试试 正常,所以这时候我们就可以安心通过babel-loader进行打包了。 但是tsc会自动转化js文件,解决办法,tsc后面加上–noEmit 结合版,每次npm run build都会先进行检测。 可以看到生效了。 每次都是编译才检测,我们其实可以监听ts文件的变化。 加上watch属性,就会开启监听模式,一旦你代码编写完保存后,就会进行检测。这样就在你编写代码的时候发现错误。 这就是ts转化的最佳方式了,babel-loadet+tsc检测
静态代码分析工具(在没有任何代码执行的情况下,对代码进行分析) eslint也是以来js得编译器,通过编译器检查哪些代码写的不合理 安装 cnpm install eslint -D(局部安装) 然后要配置我们的规则,eslint才会通过我们设置的规则去检查代码。 通过我们重重选择,.eslintrc.js文件诞生了 parseOptions:里面还有一个默认属性parse,指定eslint使用的js编译器。默认是espree,然后可以词法分析,语法分析,AST树。再通过eslint检查。 rules是可以自己定义的规则。 这个是我通过选择检查代码和查找错误,并且选择了react作为框架,然后有ts。eslint就会提示我们要不要安装对应的插件,因为生成得.eslintrc.js文件里面需要用到,如图 extens是继承,可以继承其他插件的规则。parser得解析器变成了@typescript-eslint/parser plugins是插件。 第三个是通过vue
使用npx eslint 文件路径 检查生效了,因为我们设置的是commonjs,所以我们需要重新配置一下 在parserOptions上配置。然后npx eslint检查后,没有报错,证明生效了。 可以看到可以正常使用了。并且报定义了一个变量但未使用。有时候我们开发需要,所以这个报错规则我们改一下。 我们一般可以这么配置,找到报错的地方 拿到最后面的no-unused-vars,未使用的值 然后,off 关闭, wran报警高不报错, error报错 // 0=off 1=warn 2===error 来到我们的配置文件,把该规则关闭掉。 我们这个eslint还是相对较弱的,我们改一个强一点的,继承谷歌的插件规则 可以看到,报错了很多错误。 现在我们改下规则,全部为警告 可以看到,生效了 但如果我们想设置值呢,比如两个双引号会报错,我们可以把它关掉,或者给他设置成一个双引号报错,两个双引号不报错。操作如下: 更多的配置可以上官网看看。
这个插件会读取当前目录下的.eslintrc.js文件,通过里面的规则进行检测 ESLINT的插件已经正常使用了。 格式化代码的工具配置 一般通过目录下建立一个prettierc的文件,配置规则。 如图,代码长度为40,也就是当我们按下右键格式化代码后,代码长度大于40的会自动换行。
需要把eslint-loader放后面,先检测,再转换。当我们npm run build后 直接先报错了。
老错误了,使用vue-loader,而且vue文件里面有template,这块也是要转换成js的,所以还需要一个vue-template-complier new VueloaderPlugin()后,打包一下,报错了,不过这次是因为样式问题。
很简单,只需要配置下css-loader就行 可以看到打包成功了。