yKit实践教程——yKit基础命令介绍

2018-03-08  本文已影响714人  半ma

yKit 安装完成以后,我们在命令行中直接输入ykit,会输出ykit的命令列表。我们选择一个命令server,然后输入ykit server -h就可以查看该命令的详细功能了。

config

yKit 有一份全局的参数配置表,在yKit的某些功能的时候可能会用到。比如,当我们需要开启https服务的时候,就需要提供证书的位置。

ykit config list

ykit config set email hongqi.gan@qunar.com

现在我修改下他的值

ykit config set email 805548138@qq.com

init

mkdir helloworld
cd helloworld
ykit init

项目初始化完成。

mkdir hello-react
cd hello-react
ykit init react

这次初始化的时候,时间会慢很多,因为react项目需要安装更多的依赖项目。

mkdir hello-react2
cd hello-react2
ykit init react -r https://registry.npmjs.org/
mkdir hello-react3
cd hello-react3
ykit init react -r http://npmrepo.corp.qunar.com/

转换以后就成为

会为我们添加上ykit.js,node_modules, package.json等几个文件。正常运行起来,可能还需要对配置做进一步的改动,这个在下面的小节中会讲到。

lint

lint 是一个代码质量检查的工具。它会检查你的代码是否符合一些规则,来保证你不会犯一些比较低级的错误。
一般来说,你们现在的项目代码里面在git提交的时候可能会有钩子来强制做lint的检查。不过ykit lint是需要你手动的执行命令来看结果,和git钩子不是一回事。
让我们回到helloworld那个项目里面。

ykit lint -d ./src

通过-d 参数我们可以限制检查只发生在src目录,这样可以大大提高检查的效率。如果你确定只需要检查某个目录,你可以这么干。
命令执行完成以后,会多出一个.eslintrc.json文件,这个里面配置了很多的校验规则,这里我们不做过多解释,大家需要对他进行调整的时候自行查看其文档即可。

如果项目里面已经有了这个配置文件,那么会直接使用这个配置文件。

现在我们修改src/scripts/index.js 文件,增加一个变量名拼写错误:

然后我们再执行ykit lint

我们看到给出了四条错误,从左到右依次是:

行列号 错误级别 错误描述 校验规则

我们可以根据lint的错误提示来修改可能存在问题代码。

我们再来看一下。

好吧,已经变成了warnnig

然后我们执行ykit lint

注意里面提示$违反了no-undef这个规则。这个时候我们需要对$这个变量做特殊的例外处理。例外处理有两种方式,一种是行级别的,在用到这个变量的行上方添加注释行:

/*global $*/

考虑到$可以被多次使用,我们直接在整个文件上方引入,这样整个文件都生效了。

再次验证,这个违例已经解决 。

可能在某个文件里面,我们的确需要禁用掉某个规则。禁用某个规则也有三种方式

alert('foo'); // eslint-disable-line no-alert, quotes, semi

// eslint-disable-next-line no-alert, quotes, semi
alert('foo');

alert('foo'); /* eslint-disable-line no-alert, quotes, semi */

/* eslint-disable-next-line no-alert, quotes, semi */
alert('foo');
/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */
/* eslint quotes: ["error", "double"], curly: 2 */

pack

pack 打包,把写的代码合并到一个文件里面。

通常现在的开发一般都不会把所有的逻辑都写到一个js文件里面,而是拆分成为一个个的小文件。

但是对于浏览器来说,加载的文件数量太多,会影响页面展示的速度。所以需要这个一个工具来把开发的时候写的代码,合并到一个文件里面去。

然后我们执行ykit pack,生成好的文件存在于dev目录下 。我们进去查看一下:

index.js 文件已经合并了进去。其他的无关代码是用来黏合的胶水代码,大家现在可以不必理会。

我们新建立一个utils文件夹,然后建立一个formatter.js,做日期的格式化。

执行ykit pack进行打包。

index.js里面的内容和utils/formatter.js里面的内容都合并进来了。因为在index.js 里面调用了require('./utils/formatter')语句,这样就会在合并的时候,把formatter也合并进来。

继续再建立一个新的目录service,在其中添加文件user.js。然后调整项目代码为:

index.js代码调整后 user.js代码

此时的index.js require 了 service/user.jsservice/user.js require了utils/formatter.js,这样打包的时候,就会一个一个地把这些文件都合并进来。我们执行ykit pack来验证下。

三个文件都引入了进来。代码中的 require 描述了文件之间的引用关系,或者说是依赖关系。这样就知道应该把哪些文件合并进来了。

对于ykit来说,这个配置文件就是ykit.js文件。我们打开这个文件来看下究竟。

这个文件展示的很简单,唯一写死的配合的地方就是config.exports项目。这个里面配置的文件就是index.js这个文件。所以打包的时候总是从这个地方开始找依赖关系。

然后我们在ykit.js中增加该文件的路径配置配置。

然后执行ykit pack打包,查看输出情况。

index2.js文件成功的生成出来了。

红色框线圈出来的部分是新增的配置。执行打包,查看结果。

新生成的common里面包含了重复的部分,其中文件名common就是

index.jsindex2.js内容一致,已经去掉了重复的部分。

更多yKit配置相关的东西,在后面会做更详细的阐述。

ykit pack -m

pack 命令还有 -m 参数,输出产物的目录在prd中,对其中的一些空白注释等进行了删除,变量的命名也进行了精简。所以体积会大幅度的减小。浏览器下载也更快了。

server

基础的功能是开启一个本地的http server。基础的网页样式调试,直接以file的方式打开页面就可以查看;不过在调试数据接口的时候就会遇到很多问题。建议大家使用ykit server开启服务器来调试。

来到helloworld 项目的根目录下,执行

sudo ykit s

按照命令行的提示,用浏览器打开该页面

出现一条错误webpackJsonp is not defined,找不到一个全局的函数,原因是我们拆分出来了common.js文件,而index.html里面还没有引入他,我们添加上该js的引入。

然后刷新页面,页面就正常了。

修改下代码,然后刷新浏览器。


变化已经刷新到浏览器里面了。

sudo ykit s

打开浏览器,选择helloworld,index.html打开

我们可以看到父目录下的其他项目,这些目录现在也访问到。比如我们选择helloworld2,这样我们启动一个服务可以供多个项目一起使用。

ykit s -p 8080

sudo ykit s --hot

然后同样的,修改代码,保存代码。你就能看到效果了。当然热加载不是银弹,某些情况下,你还是需要手动刷新浏览器的。

sudo ykit s --hot -v

可以看下日志的输出效果,一般来说不会用到这个功能。

sudo ykit --hot -s

通常我们开发使用http服务就够了,不过现在全网都切换https,升级http2的背景下。也有需要开启https服务的场景。通过这条命令将启动http和https两个服务。

图中警告的意思是:我自己配置的https证书的路径不对,所以使用了ykit自带的https证书。一般来说使用默认的证书就可以了,如果你有特殊的要求,可以修改~/.ykitrc 配置文件来指定证书。

我们打开浏览器来查看效果

google 浏览器给出了警告,因为我们的证书是自己做的,没有经过权威机构的认证,所以提示不安全。选择“高级”,“继续前往”

页面打开以后,注意看左上角依然有不安全的提示。

image.png

如果你在手机上进行测试可能也会遇到同样的问题。android部分浏览器可能直接拒绝不安全的连接,选择“继续前往”的机会都没有。app里面则要看对证书校验的严格程度了。

而iOS针对这种不安全的证书,safari一般会进行提示;app里面则直接会拒绝。

所以,一般情况下,开发阶段建议使用http的方式来进行

watch

这个功能平时用到的也不多,功能是监听本地文件的变化,然后实时的构建。
我们进入到项目helloworld的根目录下,

ykit watch

目前生成产物在prd目录下面,注意其文件名没有.min.js后缀,而且文件内容也没有压缩。

目前为止yKit的基础命令和功能介绍完了

上一篇 下一篇

猜你喜欢

热点阅读