node.js - 我可以显示 npm 运行的扩展命令吗?

标签 node.js build npm

我正在尝试使用 npm 作为构建工具,灵感来自 Keith Cirkel 的文章 How to Use npm as a Build Tool 。这确实有效,但是...

$ npm run build

> browserify $npm_package_config_src -d -p [minifyify --map myproj-$npm_package_version.map.json --output dist/myproj-$npm_package_version.map.json] > dist/myproj-$npm_package_version.min.js

我来自 Make world,我真的很希望看到实际命令进一步发展,这意味着 $npm_package_config_src$npm_package_version 扩展,如下所示:

$ npm run build

> browserify src/myfile.js -d -p [minifyify --map myproj-0.4.2.map.json --output dist/myproj-0.4.2.map.json] > dist/myproj-0.4.2.min.js

有办法实现这一点吗?

推理:当人们看到实际命令时,它使调试构建变得更加清晰。现在我觉得我被蒙在鼓里(尽管正确的事情可能会发生)。另外,由于 $npm_package_config_blahblah 实在是太“拗口”了(正如 Keith 善意地说的那样),它本身就变成了一个冗长的问题。

最佳答案

问题是 npm 在涉及 npm 脚本时并没有真正的智能;它只是获取原始字符串并将它们传递到操作系统 shell(大多数操作系统为 bash,Windows 为 cmd)。 Npm 不知道什么是变量、通配符或任何 shell 功能。

因此,您只能依赖 bash 功能和/或 Windows cmd 功能。幸运的是,两者都有这个选项:

在 bash 上,您可以set -xset -o verbose,如下所示:

{
    "scripts": {
        " foo": "set -x; echo $bar"
    }
}

在 Windows 中,您可以选择 @echo on:

{
    "scripts": {
        " foo": "@echo on; echo $bar"
    }
}

但是,我不确定如何将它们组合起来以兼容这两种环境。

关于node.js - 我可以显示 npm 运行的扩展命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734981/

相关文章:

mysql - Message.Create 不是函数 sequelize cli

android - 错误构建 APK QT Creator - 构建 android 包失败

node.js - 将gulp插件保存到项目中

javascript - 获取与 react-dom 相关的错误

javascript - 如何在不使用 req 和 res.locals 的情况下在 NodeJS 中实现 ThreadLocal 变量功能?

mysql - Nodejs服务器崩溃问题

javascript - 登录部分后获取跨域

android - 将 react-native 升级到 0.59.3 后,Android 上的 Navigation.startTabBasedApp 出现错误

visual-studio - 默认情况下,如何按构建顺序对 Visual Studio 的构建输出进行排序?

php - 在 laravel 应用程序中安装 npm 包