webpack可以根据环境变量为单个文件设置别名

时间:2016-08-29 23:35:07

标签: javascript webpack

鉴于此文件夹结构

/products
-foo
 -foo.js
-bar
 -bar.js

我希望能够importrequire foo.jsbar.js,具体取决于名为BUILD_PRODUCT的环境变量。 我想导入import Product from "product"

Webpack应在product[.js]BUILD_PRODUCT

的帮助下解析/products/$BUILD_PRODUCT/$BUILD_PRODUCT.js

所以如果export BUILD_PRODUCT=foo它应该解决

import Product from "product"import Product from "/products/foo/foo.js"

这可能吗?

我已将modulesDirectories定义为:

const PRODUCT_DIR = path.join(__dirname, "products", process.env.BUILD_PRODUCT)
const PRODUCT_SRC_DIR = path.join(PRODUCT_DIR, "src")

modulesDirectories: [
  PRODUCT_DIR,
  PRODUCT_SRC_DIR,
  SRC_DIR,
  "node_modules",
],

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。这回答了这个repo

您可以使用以下句子检查环境:

var ENV = process.env.npm_lifecycle_event;
var isTest = ENV === 'test' || ENV === 'test-watch';
var isProd = ENV === 'build';

从npm脚本中取出ENV,不好解释一下。如果我运行这个脚本:

"build"

isProd将为true,如果运行以下命令:

"test"

isTest将是真的,最后如果你正在开发,你需要运行这个命令

"server"

所以isTest和isProd都是假的。

这是环境的一种方式。希望这会对你有所帮助。