怎么在package.json的scripts命令中添加参数?

  1. 我使用的vue的webpack模板创建的项目
  2. 想在package.json的scripts中想加入一些参数
  "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "dwe": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js -- --cparam",
    "start": "npm run dev -- --reporter",
    "lint": "eslint --fix --ext .js,.vue src",
    "build": "node build/build.js"
  },

想在引入路由的时候通过对参数cparam的读取,引入不同的路由
比如npm run dev --ships=4会提示我his dependency was not found:这样
试了很多方法也没搞定,有人知道怎么弄吗?

阅读 14.9k
5 个回答

最终还是自己来回答吧~
在引入路由文件时候判断参数是不通的,因为webpack build的时候是不会进行逻辑判断的,所以要在入口文件做点事情。
下面开始叙述步骤:基于Vue2的项目模板

  1. 准备2个build文件,一个是build-wechat.js,另外一个是build-native.js,在package.json里面分别run这2个不同的文件(取决于有几个不同的打包方式)
  2. 这2个不同的build文件分别引入不同的webpack的config文件
  3. 最终到不同的main文件,在不同的main里面引入了不同的router,实现了对不同router的打包

文件个数增加不少,但是可以把完全相同的部分写成common文件,这样以后修改也方便.

最终的效果就是:

  • npm run build-wechat打的是微信端的包
  • npm run build-native打的是原生端的包

使用 -- 可以为 npm scripts 拼接额外的内容. 注意 -- 后面的空格

npm run dev -- --ships=4 

听你说的感觉跟我最近做的东西类似

我是用 yargs 做的 https://github.com/yargs/yargs

不是写在package.json 里面

const yargs = require('yargs')
const argv = yargs
    .usage('npm run dev [options]')
    .option('s', {
        alias: 'ships',
        describe: 'router',
        default: '4'
    })
    .help()
    .argv
var server = new Server(argv)
class Server {
    constructor(argv) {
        this.conf = argv
    }
    if(this.conf.ships == 4){
     ····
    }else{
     ····
    }

希望能帮到你 , 要是我理解错了 就当我路过,溜了溜了

npm run dev ----ships 4
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏