جاوااسکریپت - چگونه پس از ساخته شدن پروژهام، فایلهای خروجی WebPack را بهطور خودکار در مکان دیگری ذخیره کنم
ما یک پروژه SDK داریم که به دو پروژه دیگر وابسته است.
وقتی میخواهیم یک برنامه کامل بسازیم، ابتدا باید پروژه SDK را بسازیم و بارگذاری کنیم. سپس میتوانیم بعد از اجرای npm install دو پروژه دیگر را بسازیم.
این بار میخواهم یک اسکریپت برای توسعهدهنده اضافه کنم. وقتی اسکریپت را در پروژه SDK اجرا میکنم، میتوانم فایلهای خروجی ساخته شده را در node_modules پروژههای دیگر ذخیره کنم.
این کد من است.
فایل package.json:
{
...
"scripts": {
"build:dev": "webpack --mode=development",
...
}
...
}
فایل webpack.config.js:
let config = {
...
module: {
rules: [
{
test:/\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
}
...
}
module.exports = (env, argv) => {
if(argv.mode === 'development') {
// We put all the projects in one repo
config.output.path = path.resolve(__dirname,'../another-project/node_modules/sdk/dist/bundle')
}
}
و در نهایت ما outDir را در tsconfig.json تنظیم کردیم.
مشکل این است:
- چگونه مسیر فایل خروجی برای فایلهای اعلان تایپاسکریپت را با آرگومانهای WebPack تغییر دهیم؟
- چطور همه فایلها را به طور همزمان در دو مکان ذخیره کنیم؟
من مشکل آخر را با استفاده از webpack -env xxx && webpack -env xxx حل کردم. من فقط اسکریپت را دو بار اجرا کردم، شاید کسی ایده بهتری داشته باشد.
حالا فقط یک سوال:
- چگونه مسیر فایل خروجی برای فایلهای اعلان تایپاسکریپت را بهصورت داینامیک تنظیم کنیم؟
پاسخ شماره ۱
فایل webpack.config.js:
let config = {
...,
module: {
rules: [
{
test:/\.tsx?$/,
use: 'ts-loader',
options: {
configFile: "tsconfig.server.json"
}
}
]
},
...
}
سپس میتوانم configFlie را در ماژول وبپک تغییر دهم.
پاسخ شماره ۲
https://webpack.js.org/configuration/output/
module.exports = {
...
output: {
filename: "lib.js"
}
...
تنظیم دایرکتوری خروجی در تایپاسکریپت به شما کمک نخواهد کرد زیرا وبپک مسئول کامپایل است و فقط از تایپاسکریپت برای کامپایل بعد از خروجی گرفتن فایلها استفاده خواهد کرد.
