欢迎转载,请支持原创,保留原文链接:blog.ilibrary.me

想给taro加一些条件编译控制选项,文档找不到相关资料,于是想调试一下taro的代码.

taro是一个nodejs工具,所以可以直接用nodejs inspect来调试。设置方法入下:

  1. 找到taro脚本地址: “ll which taro
     /usr/local/bin/taro -> ../../../Users/xxx/.config/yarn/global/node_modules/.bin/taro
    

    taro是一个符号链接,指向另外一个文件, 实际上

  2. 编辑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

  3. chrome打开 chrome://inspect, 可以看到session, 点击inspect即可打卡调试窗口。

taro文件解读

  1. 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

参考

  1. 使用 Taro 开发微信小程序的实践 + 踩坑合集
  2. 内置环境变量
  3. Taro编译配置
  4. Taro的插件基于Tapable