如何在webpack中动态更改导入路径?

时间:2017-12-22 08:39:09

标签: javascript webpack

我有一组导出,我通常从一个目录导入:

Step 17/34 : COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/tcp-slave-agent-port.groovy
COPY failed: stat /var/lib/docker/tmp/docker-builder028619870/init.groovy: no such file or directory

但是,如果我使用特定的NODE_ENV集运行webpack,我希望将所有此类导入的根目录视为es6:

docker build -t jenkins-k8s .

我该怎么做,例如让webpack动态解析import { myThing } from 'path/to/dir/es5/things' import { myThing } from 'path/to/dir/es6/things'

2 个答案:

答案 0 :(得分:6)

您可以使用别名。

例如,在您的webpack配置中,您可以使用以下内容:

const alias = {};
if (NODE_ENV === ...) {
    alias['path/to/dir/es5'] = 'path/to/dir/es6'
}

进一步阅读:https://webpack.js.org/configuration/resolve/

答案 1 :(得分:1)

这是我处理这些东西的方法。

内置的DefinePlugin与env变量相结合。

在package.json中

,按以下方式添加env变量

"script": "... webpack --env.SOME_ENV_VAR=value -p"

然后,在您的webpack.config文件中添加您的DefinePlugin

plugins: [
    ...

    new webpack.DefinePlugin({
        SOME_ENV_VAR: env.SOME_ENV_VAR,
    }),

    ...
]

然后您可以在代码中使用SOME_ENV_VAR作为全局变量

/* global SOME_ENV_VAR */    

const esX = SOME_ENV_VAR === value ? 'es5' : 'es6';

myThing = require(`path/to/dir/${esX}/things`)