uniapp npm获取命令行参数

概要

提示:uniapp 用cli工程创建,npm命令启动编译不同的文件

例如:在package.json中,如下

"scripts": {
    "build": "node script/index.js",
    "build:h5": "cross-env NODE_ENV=production UNI_PLATFORM=h5 vue-cli-service uni-build",
    "build:mp-weixin": "cross-env NODE_ENV=production UNI_PLATFORM=mp-weixin vue-cli-service uni-build",
    // 启动sdy项目
    "dev:h5sdy": "cross-env VUE_APP_HTYPE=SDY NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
    // 启动xzrc项目
    "dev:h5xzrc": "cross-env VUE_APP_HTYPE=XZRC NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
    "dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch"
  },

以上代码,都可以使用 npm run dev:h5sdy / dev:h5xzrc 启动,其中区别就是 VUE_APP_HTYPE 后面的参数,可以在项目中 process.env.VUE_APP_HTYPE 获取到命令行中的参数

使用场景

提示:这里可以添加技术整体架构

比如一个成熟的项目,功能都比较齐全。突然有一天,这个项目也会给其他公司机构用,需要重新创建分支?copy一份?no,不需要。

可以继续维护目前这个分支,各自功能可以用节点进行v-if或者其他的一些办法,项目基本配置应该有的吧,比如:在main.js导入项目的基本配置(提前在utils创建一个index.js,各自项目创建各自的js,之后导入到index.js)

有个问题,比如我怎么知道utils里面的index.js怎么动态导入?可以使用本教程

技术细节

提示:这里可以添加技术细节

方法一:

 "scripts": {
    "dev:h5sdy": "cross-env VUE_APP_HTYPE=SDY NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
    "dev:h5xzrc": "cross-env VUE_APP_HTYPE=XZRC NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve",
  },

重点为:VUE_APP_HTYPE=SDY,必须以VUE_APP_开头,否则env读取不到

在项目utils/index.js使用

import xzrcyyDatas from './xzrcyyDatas.js' // 导入的是各自项目的基础配置
import sdfyyDatas from './sdfyyDatas.js'

let HTYPE = process.env.VUE_APP_HTYPE

let nodeSettings = {}
if (HTYPE === 'XZRC') {
  nodeSettings = xzrcyyDatas
} else if (HTYPE === 'SDY') {
  nodeSettings = sdfyyDatas
}

export default nodeSettings


// 或者
import xzrcyyDatas from './xzrcyyDatas.js' // 导入的是各自项目的基础配置
import sdfyyDatas from './sdfyyDatas.js'

let HTYPE = process.env.VUE_APP_HTYPE

const mapSettings = {
  'XZRC': xzrcyyDatas,
  'SDY': sdfyyDatas,
}
let nodeSettings = mapSettings[HTYPE]

if (!nodeSettings) {
  // 如果没有匹配的配置,则抛出错误
  throw new Error('VUE_APP_HTYPE是未知值--请检查是否进行配置')
}

export default nodeSettings

方法二:

"scripts": {
    "dev:h5sdy": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve --H_TYPE=SDY",
    "dev:h5xzrc": "cross-env NODE_ENV=development UNI_PLATFORM=h5 vue-cli-service uni-serve --H_TYPE=XZRC",
  },

重点为:--H_TYPE=XZRC

  • 在vue.config.js中设置
const webpack = require('webpack')

module.exports = {
  configureWebpack: {
    plugins: [
      new webpack.DefinePlugin({
        'process.argv': JSON.stringify(process.argv)
      })
    ]
  }
}

  • 在项目utils/index.js使用
import xzrcyyDatas from './xzrcyyDatas.js' // 导入的是各自项目的基础配置
import hytDatas from './hytDatas.js'

let argv = process.argv
let H_TYPE = ''
if (argv.length > 0) {
  argv.map((item, index) => {
    if (item.indexOf('H_TYPE') > -1) {
      let hType = item.split('=')[1]
      H_TYPE = hType
    }
  })
}

let nodeSettings = {}
if (H_TYPE === 'XZRC') {
  nodeSettings = xzrcyyDatas
} else if (H_TYPE === 'SDY') {
  nodeSettings = hytDatas
}
export default nodeSettings

小结

提示:方法二有一定优势,可以在命令行拼接参数,考虑到后期开发不知如何启动,所以傻瓜式了一点

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值