Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Bazel运行nodejs目标并表示依赖关系_Node.js_Bazel - Fatal编程技术网

Node.js Bazel运行nodejs目标并表示依赖关系

Node.js Bazel运行nodejs目标并表示依赖关系,node.js,bazel,Node.js,Bazel,我正在构建一个简单的nodejs应用程序,并希望使用Bazel(Bazel中的新手)运行它—使用Bazel版本0.28.1 mypackage.json 我的index.js 我的身材,巴泽尔 我的工作区 在node_app目录中,我执行bazel clean&&bazel run/:app,运行正常 现在我的问题是 任何让nodejs_二进制文件传播所有node_模块的方法,而不是在BUILD.bazel文件中将它们列为“@npm//lodash”(比如使用文件组) 如果我删除node_m

我正在构建一个简单的nodejs应用程序,并希望使用Bazel(Bazel中的新手)运行它—使用Bazel版本0.28.1

mypackage.json 我的index.js 我的身材,巴泽尔 我的工作区 在node_app目录中,我执行
bazel clean&&bazel run/:app
,运行正常

现在我的问题是

  • 任何让nodejs_二进制文件传播所有node_模块的方法,而不是在BUILD.bazel文件中将它们列为“@npm//lodash”(比如使用文件组)
  • 如果我删除node_modules目录,bazel执行将在此之后停止工作。感觉好像没有必要再进行“npm安装”。我错过了什么
  • 如果我不更改package.json,而是向index.js添加更多代码,那么后续构建是否足够智能,不会执行“npm安装”,因为它不是必需的
  • 任何让nodejs_二进制文件传播所有node_模块的方法,而不是在BUILD.bazel文件中将它们列为“@npm//lodash”(比如使用文件组)

    推荐的方法rules_nodejs的0.13.0版本不推荐这种行为 是使用细粒度的npm依赖项,这些依赖项是使用
    warn\u install
    npm\u install
    规则设置的。这有助于减少为目标设置运行文件所需的时间。完整的示例和说明在
    nodejs\u二进制文件
    内置规则中的
    node\u modules
    属性的文档中:

    如果我不更改package.json,而是向index.js添加更多代码,那么后续构建是否足够智能,不会执行“npm安装”,因为它不是必需的

    是的,对于这样的源代码更改,bazel不应该运行另一个
    npm安装
    或重建
    node\u模块
    目录。事实上,运行
    bazel run
    只需更改js文件中的一行就可以了

    {
      "name": "nodeapp",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node index.js"
      },
      "dependencies": {
        "lodash": "4.17.15"
      },
      "author": "",
      "license": "ISC"
    }
    
    const _ = require("lodash")
    const ver = _.VERSION
    console.log(ver);
    
    load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
    
    nodejs_binary(
      name = "app",
      install_source_map_support = False,
      data = [
        "index.js",
        "@npm//lodash",
      ],
      entry_point = "index.js",
    )
    
    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    
    RULES_NODEJS_VERSION = "0.32.2"
    RULES_NODEJS_SHA256 = 
    "6d4edbf28ff6720aedf5f97f9b9a7679401bf7fca9d14a0fff80f644a99992b4"
    http_archive(
      name = "build_bazel_rules_nodejs",
      sha256 = RULES_NODEJS_SHA256,
      url =`"https://github.com/bazelbuild/rules_nodejs/releases/download/%s/rules_nodejs-%s.tar.gz" % (RULES_NODEJS_VERSION, RULES_NODEJS_VERSION),`
    )
    
    
    load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "npm_install")
    
    # Setup the Node.js toolchain & install our npm dependencies into @npm
    npm_install(
      name = "npm",
      package_json = "//:package.json",
      package_lock_json = "//:package-lock.json",
    )