如何在NPM bin脚本中使用其他包?

时间:2018-01-11 15:49:53

标签: javascript node.js npm

假设我正在开发两个名为web-appshared-build-tools的NPM包。 shared-build-toolsweb-app的依赖关系。

我想在构建工具中创建一个可以在应用程序中使用的bin脚本,因此我将以下内容添加到shared-build-tools的{​​{1}}:

package.json

这意味着"bin": { "test": "test.js" } 可以test.js作为名为web-app的可执行文件使用test。这种方法记录在the NPM blog

问题:

链接文档建议我们在shelljs内使用test.js来运行命令,这些命令可以在Web应用程序的上下文中运行,而不是在共享构建工具中运行。 有没有办法在shared-build-tools

的上下文中运行命令

更具体地说,test.js可能包含以下内容:

#! /usr/bin/env node

const path = require('path');
const shell = require('shelljs');

const webpackConfig = path.resolve(__dirname, 'webpack.config.js');
const command = `mocha-webpack --webpack-config "${webpackConfig}" "src/**/*.spec.js"`;

shell.exec(command);

但在npm link两个模块之后,Web应用程序将报告mocha-webpack不存在 - 因为当上下文是应用程序时它不存在。但我确实mocha-webpackshared-build-tools的依赖关系,因此希望有一个解决方案。

有什么想法吗?

请注意,src/**/*.spec.js现在是无意义的 - 如果/当我解决此问题时,我会将此glob作为参数从Web应用程序发送。

0 个答案:

没有答案