用蚂蚁执行NPM



我想自动使用前端和后端的应用程序构建。为此,我想将Maven与ANT一起用于平台独立副本和CLI任务。有了一些docker ...的CLI,这起作用。但这对于npmnpm本身提供的CLI不起作用。

<exec executable="docker">
    <arg line="version"/>
</exec>
<!--Works-->
<exec executable="C:Program Filesnodejsnpm.cmd">
    <arg line="version"/>
</exec>
<!--Doesn't work-->
<exec executable="npm">
    <arg line="version"/>
</exec>

如第二个示例所示,如果我指定了NPM.CMD的完整路径,则该脚本可以工作。但这至少应该在Windows和Unix上使用。因此,指定完整路径不是一个选项。

有什么方法可以运行npm及其模块来自ANT?


晚期编辑:

真正的问题是,Windows节点安装程序还将一个名为npm的文件放入bin文件夹中,该文件是用于Cygwin的bash脚本。NPM bin文件夹已添加到"全局" PATH env var中,并且Windows CMD确实选择了正确的二进制文件,因为它使用PATHEXT env var来确定什么是可执行文件,什么不是。Ant Exec插件不使用PATHEXT,而仅执行第一个名为npm失败的文件。解决方案是在路径中重命名普通npm文件。这样,蚂蚁首先看到 npm.cmd文件,一切顺利运行。

我知道这是旧的,但这就是我将来的东西。在我们的Mac,Unix和Windows Box中工作。

  <macrodef name="exec-node">
    <attribute name="module" description="The name of the NodeJS module to execute" />
    <attribute name="failonerror" default="true" description="Fail if the exit code is not 0" />
    <attribute name="dir" description="Directory to execute task" />
    <element name="args" implicit="yes" description="Argument to pass to the exec task" />
    <sequential>
      <exec executable="cmd.exe" dir="@{dir}" failonerror="@{failonerror}" osfamily="winnt">
        <arg line="/c  @{module}" />
        <args />
      </exec>
      <exec executable="@{module}" dir="@{dir}" failonerror="@{failonerror}" osfamily="unix" logError="true">
        <args />
      </exec>
    </sequential>
  </macrodef>

那么这样的事情可以起作用

    <exec-node dir="${node.project.dir}" module="npm" failonerror="true" >
      <arg value="run" />
      <arg value="lint" />
    </exec-node>

您当然可以用作NPM的硬码模块,也可以默认为NPM,但是我将其与NPM和NPX一起使用。

从我可以收集的内容中,无法直接通过ANTRUN插件调用NPM。

我确实通过使用/c参数调用CMD(在Windows上)来运行它。

示例:

<exec executable="cmd">
    <arg line="/c npm run babel -- src/main/webapp/js/es6/ --presets babel-preset-es2015 --out-dir src/main/webapp/js/"/>
</exec>

这对我在Windows上有用:

<exec executable="npm.cmd">
    <arg value="version"/>
</exec>

如果您想使用npm,则应查看前端 - 磁性plugin。

相关内容

  • 没有找到相关文章

最新更新