在我更新了typescript文件之后,app-script确实进行了构建过程,但结果仍然相同。 每次进行更改时,重新启动服务器都是非常烦人的工作。
例如,
当我将一行代码从console.log('ABC')
更改为console.log('DEF')
时,控制台再次打印出ABC
。
我已经复制了一个示例Ionic 3项目来测试
livereload
而不使用自定义Web包配置文件,一切都很顺利。
好像我错过了自定义配置文件中的内容。我在这里做错了什么?
webpack.config.js
const path = require('path');
const webpackDefault = require('@ionic/app-scripts/config/webpack.config');
const webpackMerge = require('webpack-merge');
const customConfig = {
dev: {
resolve: {
alias: {
'@myproject-app': path.resolve('src/app'),
'@myproject-environments': path.resolve('src/environments'),
'@myproject-pages': path.resolve('src/pages'),
}
}
},
prod: {
resolve: {
alias: {
'@myproject-app': path.resolve('src/app'),
'@myproject-environments': path.resolve('src/environments'),
'@myproject-pages': path.resolve('src/pages'),
}
}
}
};
module.exports = webpackMerge(webpackDefault, customConfig);
cli包:(/ usr / local / lib / node_modules)
@ionic/cli-utils : 1.19.0
ionic (Ionic CLI) : 3.19.0
全球套餐:
cordova (Cordova CLI) : 7.1.0
本地包裹:
@ionic/app-scripts : 3.1.7
Cordova Platforms : android 6.3.0 browser ios 4.5.4
Ionic Framework : ionic-angular 3.9.2
系统:
ios-deploy : 1.9.2
Node : v8.9.0
npm : 5.5.1
OS : macOS High Sierra
Xcode : Xcode 9.2 Build version 9C40b
答案 0 :(得分:2)
我解决问题的方法是遵循gshigeto/ionic-environment-variables的步骤。我不必复制原始配置。我希望这个答案有助于其他人。
const chalk = require("chalk");
const fs = require('fs');
const path = require('path');
const useDefaultConfig = require('@ionic/app-scripts/config/webpack.config.js');
let env = process.env.IONIC_ENV;
useDefaultConfig.prod.resolve.alias = {
"@projectname-app": path.resolve('src/app'),
"@projectname-components": path.resolve('src/components'),
"@projectname-core": path.resolve('src/core'),
"@projectname-env": path.resolve(environmentPath('prod')),
"@projectname-pages": path.resolve('src/pages'),
};
useDefaultConfig.dev.resolve.alias = {
"@projectname-app": path.resolve('src/app'),
"@projectname-components": path.resolve('src/components'),
"@projectname-core": path.resolve('src/core'),
"@projectname-env": path.resolve(environmentPath('dev')),
"@projectname-pages": path.resolve('src/pages'),
};
if (env !== 'prod' && env !== 'dev') {
// Default to dev config
useDefaultConfig[env] = useDefaultConfig.dev;
useDefaultConfig[env].resolve.alias = {
"@projectname-env": path.resolve(environmentPath(env))
};
}
function environmentPath(env) {
var filePath = './src/environments/environment' + (env === 'prod' ? '' : '.' + env) + '.ts';
if (!fs.existsSync(filePath)) {
console.log(chalk.red('\n' + filePath + ' does not exist!'));
} else {
return filePath;
}
}
module.exports = function () {
return useDefaultConfig;
};
答案 1 :(得分:0)
我遇到了与您相同的问题,具有相同的确切实现。我能够通过简单地复制原始离子webpack配置并将其粘贴到我的自定义webpack配置文件中来解决这个问题。显然不像webpack-merge解决方案那样干净但是有效。