如何在不安装的情况下使用npm包二进制文件

时间:2016-08-04 00:13:44

标签: javascript node.js shell npm

我正在尝试使用Brunch创建一个使用enter image description here创建应用的CLI工具(在NPM中的Node中)。

基本上,预期的行为是用户会输入它来安装我的工具:

npm install -g my-cli-tool

然后,要在名为myApp的子目录中创建一个新的Brunch项目,他们将在他们的终端中运行它:

my-cli-tool myApp

早午餐将处理创建应用程序本身的大部分工作。

仅供参考,您可以通过全局安装Brunch(npm install -g brunch)然后只需输入brunch new myApp来创建早午餐项目。

我已经设置了制作暴露二进制文件的NPM包的必要内容,所以我将它简化为我的一个脚本。

到目前为止我所尝试的是以下内容:

#! /usr/bin/env node
var shell = require("shelljs");

if (!process.argv[2]) {
  console.log('You need to supply a name for your app!');
  console.log();
  console.log('Try:');
  console.log('        my-cli-tool <project-name>');
} else {
  var appName = process.argv[2];
  console.log('Your app is now being created...');

  console.log('Installing Brunch...');
  shell.exec('npm install --save brunch');

  console.log('Creating app with Brunch...');
  shell.exec('PATH=$(npm bin):$PATH brunch new ' + appName);

  console.log('Success! Your app is done.');
}

它按预期工作但问题是,安装Brunch(npm install --save brunch)将在当前工作目录中创建一个node_modules文件夹以及package.json文件。

理想情况下,我希望当前工作目录不受影响,除了创建名为myApp/的文件夹(由Brunch本身完成)。从本质上讲,我想使用早午餐来生成应用程序,而无需任何已安装Brunch本身的痕迹。

我看过npm pack,但我不确定如何将它应用于我的用例。任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

  1. 每次创建应用程序时安装早午餐都很疯狂
  2. 没有人需要包装器周围的包装器
  3. 解决方案:将早午餐放在your-awsesome-cli-tool的依赖项中,并从您的包目录中调用它