[英]How to check node_modules folder is there or not in my angular project
[英]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。 這基本上成績單ts
到js
,建立一個綁定的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.