簡體   English   中英

將node_modules資產插入我的項目

[英]insert node_modules assets into my project

我正在使用webpack構建我的lambda函數,但是有一個加載了.proto擴展文件的程序包,我無法將其導入到我的項目中,因此出現文件未找到錯誤。 這在node_modules文件夾內稱為,例如:

  path.join(__dirname, 'checkin.proto');

我的webpack輸出只是一個index.js文件,因此沒有任何checkin.proto文件要加載。

這是我的webpack.config.js用於構建我的lambda。 這基本上成績單tsjs ,建立一個綁定的index.js和zip它。

const glob = require('glob');
const path = require('path');
const ZipPlugin = require('zip-webpack-plugin');

module.exports = (env, argv) => {
  console.log(`Buiding in ${argv.mode} mode`);

  const functionsToBuild = glob
    .sync('./src/lambdas/*/index.*')
    .map(x => x.match(/(?<=src\/lambdas\/).*/)[0]);

  return functionsToBuild.map(fxn => {
    const lambdaName = fxn.split('/')[0];
    const triggerName = fxn.split('/')[1];

    return {
      entry: path.join(__dirname, 'src', 'lambdas', lambdaName, triggerName),
      devtool: 'cheap-module-eval-source-map',
      output: {
        filename: 'index.js',
        path: path.join(__dirname, 'dist', lambdaName),
        libraryTarget: 'commonjs2'
      },
      module: {
        rules: [
          {
            test: /\.ts(x?)$/,
            use: [
              'ts-loader'
            ]
          }
        ]
      },
      resolve: {
        extensions: ['.ts', '.js']
      },
      optimization: {
        minimize: false,
        namedModules: true
      },
      plugins: [
        new ZipPlugin({
          path: path.join(__dirname, 'dist', lambdaName),
          pathPrefix: '',
          filename: `${lambdaName}.zip`
        })
      ],
      externals: {
        'aws-sdk': 'aws-sdk',
        'awslambda': 'awslambda',
        'dynamodb-doc': 'dynamodb-doc',
        'imagemagick': 'imagemagick'
      },
      target: 'node',
      node: {
        __filename: false,
        __dirname: false
      },
      stats: 'errors-only',
      bail: true,
    }
  });
}

如何加載此文件,或者至少在node_modules結構中不接觸?

兩種選擇:

1)不要將.proto文件捆綁到捆綁的JS中,而是要通過https://www.npmjs.com/package/copy-webpack-plugin將源.proto文件復制到構建目標中。 這應該允許您使用現有方法來獲取此文件的數據並仍然進行解析。

2)通過webpack loader插件將此.proto文件捆綁到捆綁的JS中: https ://www.npmjs.com/package/proto-loader或可能是https://www.npmjs.com/package/raw -loader 但是,這將需要您放棄現有的獲取方法,並且可能需要也可能不需要更新捆綁數據的解析邏輯。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM