有条不紊地导入npm模块?

时间:2017-04-26 08:43:26

标签: javascript reactjs npm webpack ecmascript-6

我的项目结构如下:

- workspace
  - customPackage
    - customIndex.js
  - myProject
    - index.js
  - myProject2
    - index.js

在开发中,我想从我的本地工作区导入包,如下所示:

//index.js
import something from '../customePackage/customIndex.js'

在生产中,我需要从npm模块中进行导入,如下所示:

//index.js
import something from 'customPackage';

目的是能够使用包中的本地更改(不经过提交周期)。最后,在测试之后,可以通过npm包推送和正常使用包。

如何以高效的方式执行此操作,而无需每次都进行代码更改?

2 个答案:

答案 0 :(得分:1)

您可以将Resolve#alias与Webpack一起使用:

resolve: {
    alias: {
        "customPackage": process.env.NODE_ENV === "production" ? 
            "customPackage" :
            path.resolve(__dirname, "../customePackage/customIndex.js")
    }
}

然后在你的来源中,你只需要这样做:

import something from 'customPackage';

它将指向正确的包装。显然,您需要设置NODE_ENV环境变量,或根据您的构建环境进行更改。

答案 1 :(得分:0)

如果您已经在使用webpack,则可以创建两个不同的入口点:

entry: {
    bundle: './Scripts/index.tsx',
    bundle2: './Scripts/index2.tsx'
},
output: {
    publicPath: "/js/",
    path: path.join(__dirname, '/wwwroot/js/'),
    filename: '[name].js'
},

然后在index导入主模块并在index2导入测试模块。因此,您将拥有不同的捆绑文件bundle.jsbundle2.js