【问题标题】:Format argument value before passing to a yarn/npm script在传递给 yarn/npm 脚本之前格式化参数值
【发布时间】:2021-03-17 11:33:02
【问题描述】:

我有一个故事书启动脚本,我想为某个特定文件夹运行它:

"storybook": "start-storybook -p 6006 -s ./src"

这将从src 文件夹加载所有故事。随着故事数量的增加,我只想从一些子文件夹中运行故事:

start-storybook -p 6006 -s ./src/components/CommonComponents
start-storybook -p 6006 -s ./src/components/DashboardComponents

如何动态格式化参数值以便像下面这样开始故事书?

$ yarn storybook CommonComponents

它会变成:

start-storybook -p 6006 -s ./src/components/CommonComponents

【问题讨论】:

  • *nix 上考虑使用 shell 函数。例如,将 package,json 中的脚本定义为 "storybook": "func() { start-storybook -p 6006 -s \"./src/${1}\"; }; func",然后运行以下命令:yarn run storybook components/CommonComponents。对于跨平台解决方案,您需要考虑编写一个 node.js 脚本,这也在我的回答 here 中进行了描述。

标签: javascript npm yarnpkg


【解决方案1】:

storybook 任务可以是一个脚本,然后在脚本中解析参数,然后调用start-storybook

  1. package.json (e.q run-storybook) 中创建一个任务并将其设置为执行自定义脚本:
"run-storybook": yarn ./path/to/script.js
#!/bin/env node

// script.js

const { spawn } = require('child_process')
const args = process.argv.slice(2)
const port = args[1]
const component = args[3]

const path = `./src/components/${component}`

spawn('yarn', ['start-storybook', '-p', port, '-s', path], {
  stdio: 'inherit',
  shell: true
})

那你可以拨打:yarn run-storybook -p 600 -s yourcomponent

注意:确保脚本是可执行的:chmod +x /path/to/script.js

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2017-12-13
    • 1970-01-01
    • 2018-11-22
    • 2019-02-08
    • 2016-07-03
    相关资源
    最近更新 更多