Я начал писать библиотеку, чтобы получать некоторые данные из API в машинописном шрифте и использовать webpack в качестве упаковщика.У нас есть dev, test и prod api, поэтому библиотека должна использовать разные URL для каждой среды.В Webpack есть обычная встроенная опция MoleReplacmentPlugin, которая заменяет файлы в зависимости от конфигурации.Я создал различные файлы окружения, которые должны быть заменены веб-пакетом.
Я использую Ubuntu 18.04, но один из наших разработчиков, который сейчас работает над lib, в настоящее время использует windows.Он заметил, что замена не работает на его локальной машине.
webpack.config.js (пример из моего репозитория github)
const merge = require( 'webpack-merge' );
const path = require( 'path' );
const commonConfigObj = {
entry: {
'fooBar': './src/index.ts'
},
output: {
filename: '[name].js',
path: path.resolve( __dirname, 'dist' ),
library: 'FooBar',
libraryTarget: 'umd'
},
module: {
rules: [
{
test: /\.tsx?$/,
use: [
{
loader: 'ts-loader',
options: { configFile: 'tsconfig.json' }
}
]
}
]
},
resolve: {
extensions: [ '.ts', '.tsx', '.js' ]
},
profile: true
};
const commonConfig = merge( [ commonConfigObj ] );
const environments = {
'prod': require( './webpack/prod.config.js' ),
'dev': require( './webpack/dev.config.js' )
};
module.exports = mode=>{
if( mode ) {
const envConfig = environments[ mode.env ];
if( envConfig ) {
return merge( commonConfig, envConfig );
}
}
return merge( commonConfig, environments.dev );
};
webpack / prod.config.js (пример измое репозиторий на github)
const CleanWebpackPlugin = require( 'clean-webpack-plugin' );
const BundleAnalyzerPlugin = require( 'webpack-bundle-analyzer' ).BundleAnalyzerPlugin;
const webpack = require('webpack');
module.exports = {
mode: 'production',
plugins: [
new CleanWebpackPlugin(),
new BundleAnalyzerPlugin( {
analyzerMode: 'disabled',
generateStatsFile: true
} ),
new webpack.NormalModuleReplacementPlugin(
/src\/environments\/environment.ts/,
'./environment.prod.ts'
),
],
devtool: 'source-map'
};
Я уверен, что это не проблема веб-пакета, а неправильное использование.
Репозиторий GitHub: https://github.com/ManticSic/normalModuleReplacmentPlugin-issue-windows
Запуск npm ci
и npm run build
(или npm run build-dev
для dev env).
Важную часть можно найти в конце строки # 1
Ожидается: ...,t.environment={bar:"Prod"}...
Результат на окнах: ...,t.environment={bar:"Normal"}...