假设我正在开发两个名为web-app
和shared-build-tools
的NPM包。 shared-build-tools
是web-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-webpack
是shared-build-tools
的依赖关系,因此希望有一个解决方案。
有什么想法吗?
请注意,src/**/*.spec.js
现在是无意义的 - 如果/当我解决此问题时,我会将此glob作为参数从Web应用程序发送。