标签: yargs

根据参数使用不同来源的Gulp任务

我想用gulp完成一些简单的事情.我想编写一个通用方法,将文件从特定的源目录移动到输出目录.

假装我们有类似的东西

var args = require('yargs');
function transform-move-jsx-Development() 
{
  gulp.src(config.sourceJSX)
  .pipe(react, browserify, etc....)
  .pipe(gulp.dest(config.output_development));
};

function transform-move-jsx-Production() 
{
  gulp.src(config.sourceJSX)
  .pipe(react, browserify, etc....)
  .pipe(gulp.dest(config.output_production));
};

gulp.task('transform-move-jsx-Development', transform-move-jsx-Development);
gulp.task('transform-move-jsx-Production', transform-move-jsx-Production);

gulp.task('prod', [transform-move-jsx-Production]);
gulp.task('dev', ['transform-move-jsx-Development']);
Run Code Online (Sandbox Code Playgroud)

这两个任务:transform-move-jsx-Production和transform-move-jsx-Development除了输出目录外是相同的.我想让它更干(不要重复自己).我应该能够制作一个可以使用yarg参数的方法吗?在下一个例子中,我假装我可以将路径作为arg传递

所以我尝试使用yargs这样的东西

var args = require('yargs');

function transform-move-jsx() 
{ 
    return gulp.src(config.sourceJSX)
    .pipe(gulp.dest(args.outputDirectory));
};

gulp.task('dev', ['transform-move-jsx']);
Run Code Online (Sandbox Code Playgroud)

但是现在这需要我在命令行中为gulp调用添加参数

gulp dev --"path to output, etc."
Run Code Online (Sandbox Code Playgroud)

这显然不太可维护,因为我们从dev gulp任务中调用越来越多的gulp任务.反之亦然,因为我们不需要知道实现细节,比如运行时输出目录结构gulp dev

我可以做这样的事情:

function transform-move-jsx(destination) 
{ 
    return gulp.src(config.sourceJSX)
    .pipe(gulp.dest(destination));
};

function transform-move-jsx-Development() 
{
    transform-move-jsx("./output/development/");
};

function transform-move-jsx-Production() 
{
    transform-move-jsx("./output/production/");
};

gulp.task('transform-move-jsx-Development',transform-move-jsx-Development);
gulp.task('transform-move-jsx-Production', transform-move-jsx-Production);

gulp.task('prod', …
Run Code Online (Sandbox Code Playgroud)

javascript dry gulp yargs

29
推荐指数
1
解决办法
5883
查看次数

如何使用实验说明符分辨率=节点运行node.js cli?

我们的团队构建了一个用于维护的小型 CLI。package.json 指定了属性的路径bin,一切都很好;"bin": { "eddy": "./dist/src/cli/entry.js"}

自动完成是通过使用 来实现的yargs@17.0.1然而,由于迁移到 Sveltekit,我们最近将项目转换为使用 es6 模块,即 package.json 现在包含type: module. 因此,CLI 现在仅在我们运行以下命令时才有效:

什么有效

node --experimental-specifier-resolution=node ./dist/src/cli/entry.js help
Run Code Online (Sandbox Code Playgroud)

但是,如果我们在没有该标志的情况下运行此命令,则会收到错误“找不到模块”:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module...
Run Code Online (Sandbox Code Playgroud)

所以问题是

我们是否可以以某种方式“始终”将 the 添加experimental-specifier-resolution=node到 CLI - 这样我们就可以继续使用简写eddy并利用自动完成功能?

node.js yargs

14
推荐指数
1
解决办法
2万
查看次数

npm脚本使用yargs将参数/参数传递给节点脚本

当用作npm脚本参数时,是否可以调出从yargs中检索密钥?

OSX终端中的用户类型:

npm run scaffold --name=blah
Run Code Online (Sandbox Code Playgroud)

在package.json中执行:

"scaffold" : "node ./scaffold/index.js -- "
Run Code Online (Sandbox Code Playgroud)

这导致了

const yargs = require('yargs').argv

if (yargs) {
  console.log(yargs);
  console.log(yargs.name);
  process.exit(1)
}
...
result:
{ _: [], '$0': 'scaffold/index.js' }
undefined
Run Code Online (Sandbox Code Playgroud)

这只适用于我在package.json中的硬编码"scaffold" : "node scaffold/index.js --name=blah",但我需要这个是可配置的.

正如我所说,我正在使用args,因为它似乎可以很容易地按名称检索密钥(而不是数组).接受建议.

我错过了什么?

更新11-07-2017 相关:将命令行参数发送到npm脚本

但是,传递命令行1: npm run scaffold name=hello OR会2: npm run scaffold --name=hello产生:

1: { _: [], '$0': 'scaffold/index.js' }
2: { _: [ 'name=hello' ], '$0': 'scaffold/index.js' }
Run Code Online (Sandbox Code Playgroud)

仍然看不到检索yargs.name财产的方法.仍未定义.


更新13-07-2017

暂时,我放弃了.这似乎是不可能的.我在终端中手动运行脚本.例如 …

javascript npm yargs

13
推荐指数
3
解决办法
5174
查看次数

将 node.js 应用程序部署到谷歌云平台时找不到模块“yargs”错误

我正在尝试将我的 node.js 应用程序部署到google cloud并且我的 package.json 包含yargs依赖项。

当我将应用程序部署到谷歌云后,我收到错误无法在谷歌云平台日志中找到模块 yargs

我该如何解决上述问题?

node.js google-cloud-platform yargs

9
推荐指数
1
解决办法
9009
查看次数

我正在尝试运行 yargs 命令,但它不起作用

我在跑步:

node app.js add
Run Code Online (Sandbox Code Playgroud)

我的代码是:

const yargs = require('yargs');
yargs.command({
    command:'add',
    describe:'Adding command',
    handler:function(){
        console.log('Adding notes');
    },
})
Run Code Online (Sandbox Code Playgroud)

但是控制台上没有打印任何内容。

node.js yargs

8
推荐指数
2
解决办法
5142
查看次数

在 Node.js 中使用 import 时,Yargs 不起作用

我是 Node.js 新手,现在正在学习一些基础知识。我稍后尝试使用一些打字稿代码转换为 .js 代码。

我写了这个简单的代码来测试

    import * as fs from 'fs'


    const argv = require('yargs')
                .alias('f', 'filename')
                .alias('c', 'content')
                .demandOption('filename')
                .demandOption('content')
                .argv

    fs.writeFile(argv.filename, argv.content, (error)=>{
        if(error) 
            throw error
        console.log(`File ${argv.filename} saved.`)
    })
Run Code Online (Sandbox Code Playgroud)

这很好用。但是当我更改需要导入的行require('yargs')时,如下所示:

   import * as fs from 'fs'
   import * as yargs from 'yargs'

    const argv = yargs
                .alias('f', 'filename')
                .alias('c', 'content')
                .demandOption('filename')
                .demandOption('content')
                .argv

    fs.writeFile(argv.filename, argv.content, (error)=>{
        if(error) 
            throw error
        console.log(`File ${argv.filename} saved.`)
    })
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Argument of type 'unknown' is not assignable to parameter of type …
Run Code Online (Sandbox Code Playgroud)

node.js typescript yargs

8
推荐指数
2
解决办法
8070
查看次数

How to implement multiple subcommands with Yargs?

I've been trying and trying, but just couldn't digest Yargs' docs.

I need to create a set of commands/subcommands:

~$framework generate routed-module ModuleOne ModuleTwo ModuleThree --animation-style=bounce-up

//would call a handler with:
{ modules: string[], options: {animationStyle?: AnimationStyle}}
type AnimationStyle = 'bounce-up' | 'slide-left'

Run Code Online (Sandbox Code Playgroud)

or

~$framework generate stateful-ui ModuleOne ModuleTwo ModuleThree
//would call a handler with:
{ modules: string[]}

Run Code Online (Sandbox Code Playgroud)

or

~$framework init
//would just call a handler
Run Code Online (Sandbox Code Playgroud)

I'd like aliases: g for generate, r for routed-module, s for …

javascript command-line-interface node.js typescript yargs

8
推荐指数
1
解决办法
6200
查看次数

Yargs 帮助不显示所有帮助选项

我正在使用yargs为传递给脚本的参数添加命令行选项。当我发出帮助命令以及脚本名称时,它不显示添加参数的帮助。

const yargs=require('yargs');
 const argv= yargs.command('add', 'ADD A NOTE TO A FILE', {
    title : {
        describe : 'title of the file',
        demand: 'true'
    }
})
.help()
.argv;




root# node mainFile_node.js --help
Options:
  --help     Show help                                                 [boolean]
  --version  Show version number

     node mainFile_node.js add
YARGS ARGV:-{ _: [ 'add' ], '$0': 'mainFile_node.js' }
Run Code Online (Sandbox Code Playgroud)

javascript node.js yargs

7
推荐指数
1
解决办法
6124
查看次数

Yargs:在命令处理程序中调用现有命令

我正在尝试restart使用yargs 实现命令.我已经实现了startstop命令以及我现在要做的所有事情,就是在restart命令中调用这些现有的命令.

不幸的是,它不能简单地使用 yargs.parse('stop');

yargs.command('start', '', () => {}, (argv) => {
    console.log('Starting');
});

yargs.command('stop', '', () => {}, (argv) => {
    console.log('Stopping');
});

yargs.command('restart', 'description', () => {}, (argv) => {
    yargs.parse('stop');
    yargs.parse('start');
});
Run Code Online (Sandbox Code Playgroud)

我也找不到与Github问题或API文档相关的任何内容.我错过了什么?

谢谢!

node.js yargs

7
推荐指数
1
解决办法
379
查看次数

如何从 npm 包导入不属于 package.json 导出的文件

我正在尝试导入未按包文件列为导出的文件的内容package.json。库 (yargs) 建议通过 unpkg 之类的方式导入文件:

import Yargs from 'https://unpkg.com/yargs@17.5.1/browser.mjs';

但由于我正在构建一个 chrome 扩展,它违反了一项政策:

拒绝加载脚本“https://unpkg.com/yargs@17.5.1/browser.mjs”,因为它违反了以下内容安全策略指令:“script-src 'self' 'wasm-unsafe-eval'”。请注意,“script-src-elem”未明确设置,因此“script-src”用作后备。

安装包的结构是

yargs
-- build
  -- stuff
-- helpers
  -- index.cjs
-- package.json
-- index.cjs
-- index.mjs
-- yargs.cjs
-- ...
-- browser.mjs
Run Code Online (Sandbox Code Playgroud)

但由于 package.json 如下:

{// stuff
"exports": {
    ".": {
      "import": "./index.mjs",
      "require": "./index.cjs"
    },
    "./helpers": {
      "import": "./helpers.mjs"
    },
    "./yargs": {
      "require": "./yargs.cjs"
    }
  },
//}
Run Code Online (Sandbox Code Playgroud)

browser.mjs无法访问。

有没有办法跳过package.json导出配置并直接加载文件?我知道它就在那里,但由于某种原因无法解决。

问题变得更加严重,因为同样的情况也发生在 yargs 的依赖上,但我认为如果我能解决这个问题,另一个问题就会以同样的方式解决。

谢谢

javascript node.js npm typescript yargs

7
推荐指数
0
解决办法
823
查看次数