【问题标题】:How to set env in package.json which is used within .bablerc如何在 .bablerc 中使用的 package.json 中设置 env
【发布时间】:2020-06-14 18:46:54
【问题描述】:

我试图在运行 webpack 之前将 Jest 测试作为脚本的一部分运行,就像这样。

npm run test
webpack --progress --profile --watch --mode development

Jest 仅适用于已编译的代码,因此我将 .babelrc 设置为以下内容,这可行,但是随后它将我不需要的所有代码转换为 webpack 中的代码,在开发模式下我想将 JavaScript 保留为 un -transpiled,这样我就可以在不混淆的情况下使用它。

{
   "presets": [ "@babel/preset-env" ]
}

相反,我想通过调用“npm run test”来运行 Jest,然后我只能指定该脚本转译代码,然后 webpack 在不转译的情况下运行,我希望在我的 .babelrc 文件中有这样的内容

{
    "env": {
      "test": {
        "presets": [ "@babel/preset-env" ]
      }
    }
}

然后在我的 package.json 中,我可以将 env 设置为 test,这样就可以不理会 webpack。

"scripts": {
  "test": "SET env=test&& jest --config jest.config.js"
}

使用此设置,当“npm run test”运行时,我仍然会收到以下消息,表明 babelrc 文件没有被命中。

Jest 遇到了意外的令牌 这通常意味着您正在尝试导入 Jest 无法解析的文件,例如它不是纯 JavaScript。

谁能帮忙?

【问题讨论】:

    标签: javascript webpack jestjs babeljs


    【解决方案1】:

    结果证明我在 .babelrc 文件中的测试没问题

    {
        "env": {
          "test": {
            "presets": [ "@babel/preset-env" ]
          }
        }
    }
    

    我的 package.json 中需要的脚本是这个,没有设置任何节点环境

    "scripts": {
      "test": "jest --config jest.config.js"
    }
    

    实际上是我的 webpack 脚本配置不正确,我需要在最后添加 '--env.NODE_ENV=development'

    webpack --progress --profile --watch --mode development --env.NODE_ENV=development
    

    然后可以在我的 webpack.config 文件中检查。

    module.exports = (env) => {
        const isDevelopment = env && env.NODE_ENV === 'development';
        ...
    

    然后在我的规则中测试 isDevelopment

    rules: [{
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
            loader: 'babel-loader',
            options: isDevelopment ? {} : { presets: ['@babel/preset-env'] }
        }
    },
    

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 2020-09-22
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2020-11-25
      相关资源
      最近更新 更多