带有ES6 Babel的多个package.jsons

时间:2016-12-08 18:27:40

标签: javascript npm ecmascript-6 babel

我有一个大项目,我想分成多个package.json,以便清楚地说明每个部分的依赖关系,因此这些包可以作为单独的部分导出。

但是,我希望我的应用程序包含每个这些包,并使用webpack和babel进行编译。包有共享依赖项,因此我不想将每个包输出到/ dist文件夹。

我理想的目录结构如下:

\main
    \app
    \node_modules
    package.json
\package1
    package.json
    node_modules
    index.js
\package2
    package.json
    node_modules
    index.js

我尝试了多种方法:

  1. 使用webpack解析模块path.resolve('app')之类的内容。这只是不起作用,即使理论上应该这样。
  2. 使用main的package.json使用"package1" : "file:../package1"引用其他人。这不会将package1视为es6 javascript并抛出错误。在webpack配置中使用resolveLoaders没有帮助。
  3. 我的webpack配置如下。

    module: {
    loaders: [
        {
            test: /\.js?/,
            loader: 'babel-loader',
            include: [
                path.resolve('app'),
                path.resolve('../prose'),
            ],
            query: {
                plugins: [
                    ['react-transform', {
                        transforms: [{
                            transform: 'react-transform-hmr',
                            // If you use React Native, pass 'react-native' instead:
                            imports: ['react'],
                            // This is important for Webpack HMR:
                            locals: ['module']
                        }]
                    }],
                    ['transform-object-assign']
                ]
            }
        },
        { test: /\.css$/, loader: 'style-loader!css-loader!sass-loader' },
        { test: /\.svg$/, loader: 'file-loader' },
        { test: /\.png$/, loader: 'file-loader' },
        { test: /\.jpg$/, loader: 'file-loader' },
        { test: /\.json$/, loader: 'json-loader' }
    ]
    },
    resolve: {
        modules: [
            path.resolve('app'),
            'node_modules',
        ],
        extensions: ['.json', '.js', '.jsx'],
    }
    

    任何有关其他项目的想法或例子都会受到赞赏!

1 个答案:

答案 0 :(得分:2)

你应该看看lerna。它使您可以在一个仓库中使用多个package.jsons甚至包。它可能会帮助您满足您的要求。