【问题标题】:Does npm run <script> adds any environment property?npm run <script> 添加任何环境属性吗?
【发布时间】:2018-12-26 02:10:01
【问题描述】:

我有一个package.json 文件,其中我在脚本对象下有“build”键,它会触发我的 webpack。

但是如果我不使用 npm 运行构建,如果我只运行 webpack,我会收到错误 webpack is not recognised as internal or external command。这是否意味着 npm run &lt;script&gt; 在运行 webpack 之前设置了一些环境变量?

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.28.2",
    "webpack-cli": "^3.1.2"
  }
}

【问题讨论】:

    标签: webpack package.json


    【解决方案1】:

    鉴于 package.json 中的 scripts 部分,它不会设置任何 ENV 变量。但是,如果您愿意,也可以这样做。例如,为了方便地设置所有的 ENV 变量 操作系统,您可以使用诸如 cross-env (npm i --save-dev cross-env) 之类的包并将您的 scripts 部分更新为类似于

    { "scripts": { "build": "cross-env NODE_ENV=production webpack --config config/webpack.config.js" } }

    并在您的配置文件 (webpack.config.js) 中以 process.env.NODE_ENV 的身份访问它们

    除此之外,您可以通过全局安装 webpack 包 (npm i -g webpack webpack-cli) 来成功运行 webpack 而不是 npm run build,但这是不推荐。 最好在本地安装必要的软件包并依赖于package.json 中定义的软件包版本。即使这样做也不一定设置 ENV 变量,您需要按照上述说明或使用您喜欢的方法明确地执行此操作。

    本质上,您的npm 全局安装,它负责npm run build,它会触发链接到本地​​包的webpack 命令。在您的情况下尝试直接运行 webpack 失败,因为 webpack 包未全局安装。

    【讨论】:

      【解决方案2】:

      当您从 npm 脚本运行某些内容时,它会在 node_modules/.bin 中查找二进制文件。这就是为什么当你尝试只运行 webpack 时它失败了,你没有指定它在哪里并且你的系统不知道在哪里查看。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-22
        • 1970-01-01
        • 2019-04-12
        • 1970-01-01
        • 2021-11-21
        • 2017-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多