调试taro代码
想给taro加一些条件编译控制选项,文档找不到相关资料,于是想调试一下taro的代码.
taro是一个nodejs工具,所以可以直接用nodejs inspect来调试。设置方法入下:
- 找到taro脚本地址: “ll
which taro
”/usr/local/bin/taro -> ../../../Users/xxx/.config/yarn/global/node_modules/.bin/taro
taro是一个符号链接,指向另外一个文件, 实际上
- 编辑taro脚本, 添加
--inspect
到shebang命令末尾, 完整的内容如下:#! /usr/bin/env node --inspect require('../dist/util').printPkgVersion() const CLI = require('../dist/cli').default new CLI().run()
如果希望taro启动即断上,可以把
--inpsect
替换成--inspect-brk
- chrome打开 chrome://inspect, 可以看到session, 点击inspect即可打卡调试窗口。
taro文件解读
- cli.ts是命令行工具,包含了taro build和taro dev命令
taro配置
可以通过下面的方法来根据环境变量加载不同的内容, config/dev.js里面可以有defineConstants的功能,定义常量,然后给代码用.
定义常量:
defineConstants: {
API_GATEWAY: '"http://localhost/api/v1"'
},
文件中直接使用 API_GATEWAY:
params.url = API_GATEWAY + params.url;
注意,这是宏替换,在编译器替换的,所以有两层引号。
使用的时候,直接在命令行里面输入NODE_ENV=production yarn dev:we-app
就可以控制配置的切换。
taro project.config.json文件
project.config.json文件的拷贝发生在./packages/taro-cli/src/presets/platforms/weapp.ts
里,
// 生成 project.config.json
ctx.generateProjectConfig({
srcConfigName: 'project.config.json',
distConfigName: 'project.config.json'
})
如果要改本地tarojs,直接改~/.config/yarn/global/node_modules/@tarojs/cli/dist/presets/weapp.js
, 把上门内容替换如下:
// 生成 project.config.json
ctx.generateProjectConfig({
srcConfigName: config.projectConfig || 'project.config.json',
distConfigName: 'project.config.json'
})
然后在config/lixin.js
下面指定如下内容:
mini: {projectConfig: 'lixin.project.config.json'},
项目编译的时候会用lixin.project.config.json覆盖project.config.json.
删除global taro
当有不同版本的taro项目共存的时候,global taro就很麻烦了,因为global taro会被优先调用,导致出现错误的版本调用。
比如我的APP有两个Taro版本,一个是2.2.6, 一个是最新的3.0,我用taro运行微信小程序的时候,我全局装的是2.2.6的,那运行基于3.0的小程序就会出错,这种情况下怎么办呢?那我就把全局的删掉,然后用npx调用taro指令,它会优先寻找当前工程下的taro版本。
npx 的特点就是优先找当前目录下的版本.
删除global taro的指令如下:
yarn global remove @tarojs/cli
通过npx创建新的taro项目:
npx @tarojs/cli init exmaple_project
通过yarn add @tarojs/cli
把@tarojs/cli
放devDependency下面,然后yarn install
, 接下来就可以用npx命令执行taro的指令了。
在项目目录下查看taro版本:
npx taro -v