Webpack how to cache bust angular-translate with $translatePartialLoader?











up vote
1
down vote

favorite
1












"webpack": "^2.7.0"


I'm trying to add a hash to our translation files in order to cache bust when deploying. I've managed to extract the json and add a hash and output it to a folder and is good with the world.



But, my unhashed json is still under there original folders after building. I understand that we don't need to add a loader for json as it already has means of handling importing, so my question would be how do I clean out the json that's already been processed?



my folder structure is as follows



src/
app/
module-name/
/translations
en.json
fn.json
module-name/
/translations
en.json
fn.json
//ect...


I used the CopyWebpackPlugin to get the json and hash is there maybe an option ive missed that cleans out the process'd files? or maybe i'm approaching this the incorrect way.



const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');

const VersionFile = require('webpack-version-file');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const pkg = require('../package.json');
const autoprefixer = require('autoprefixer');

module.exports = {
module: {
loaders: [
{
test: /.js$/,
exclude: /node_modules/,
loader: 'eslint-loader',
enforce: 'pre'
},
{
test: /.(css|scss)$/,
loaders: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?minimize!resolve-url-loader!sass-loader?sourceMap!postcss-loader'
})
},
{
test: /.(jpe?g|png|gif|svg)$/,
loader: 'file-loader',
options: {
regExp: //([a-z0-9]+)/[a-z0-9]+.json$/,
name: '[name]-[hash].[ext]'
}
},
{
test: /.js$/,
exclude: /node_modules/,
loaders: [
'ng-annotate-loader',
'babel-loader'
]
},
{
test: /.html$/,
loaders: [
'html-loader'
]
}
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
template: conf.path.src('index.html')
}),
new webpack.optimize.UglifyJsPlugin({
output: {comments: false},
compress: {unused: true, dead_code: true, warnings: false} // eslint-disable-line camelcase
}),
new ExtractTextPlugin('index-[contenthash].css'),
new webpack.optimize.CommonsChunkPlugin({name: 'vendor'}),
new webpack.LoaderOptionsPlugin({
options: {
postcss: () => [autoprefixer]
}
}),
new webpack.HashedModuleIdsPlugin(),
new CopyWebpackPlugin([{
from: 'src/app/**/*.json',
to: 'translations/[name]-[hash].[ext]'
}]),
new VersionFile({
output: `${conf.paths.dist}/version.txt`,
verbose: true
})
],
output: {
path: path.join(process.cwd(), conf.paths.dist),
filename: '[name]-[hash].js'
},
entry: {
app: [`./${conf.path.src('app/app.module.js')}`],
vendor: Object.keys(pkg.dependencies)
},
node: {
fs: 'empty',
/* eslint-disable camelcase */
child_process: 'empty'
}
};


Or to similfy the question, how can i add a hash to json files? and the following code doesn't seem to do anything.



   {
test: /.json$/,
loader: 'file-loader',
options: {
name: '[name]-[hash].[ext]'
}
}


example of the translations being in both locations



EDIT:



so it seems like my json loader doesnt pick up the translation files as they're dynamicly imported like so how:



  $translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: 'app/{part}/translations/{lang}.json'
});


do you handle cases like this?










share|improve this question
























  • In CopyWebpackPlugin you can specify the path to: path.join(process.cwd(), conf.path.dist, 'translations/[name]-[hash].[ext]') it will provide an absolute path to the plugin instead of the current relative path per entry. This will create a translations folder at the root of your dist directory
    – Asten Mies
    Nov 13 at 18:34












  • Yes I can create the translations folder with the hashes just fine will your method remove the old entries?
    – Joe Warner
    Nov 13 at 19:08










  • @astenmies Thanks for having a look
    – Joe Warner
    Nov 13 at 19:09










  • To remove the old entries you can just delete the dist folder and build again
    – Asten Mies
    Nov 13 at 19:10










  • No so the JSON copied still remains in there original path shown In the screen shot ofc I could do something like exec('-rm /dist/app') or something to that flavour but I was hoping it could be done with the build step if not that's cool
    – Joe Warner
    Nov 13 at 19:13















up vote
1
down vote

favorite
1












"webpack": "^2.7.0"


I'm trying to add a hash to our translation files in order to cache bust when deploying. I've managed to extract the json and add a hash and output it to a folder and is good with the world.



But, my unhashed json is still under there original folders after building. I understand that we don't need to add a loader for json as it already has means of handling importing, so my question would be how do I clean out the json that's already been processed?



my folder structure is as follows



src/
app/
module-name/
/translations
en.json
fn.json
module-name/
/translations
en.json
fn.json
//ect...


I used the CopyWebpackPlugin to get the json and hash is there maybe an option ive missed that cleans out the process'd files? or maybe i'm approaching this the incorrect way.



const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');

const VersionFile = require('webpack-version-file');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const pkg = require('../package.json');
const autoprefixer = require('autoprefixer');

module.exports = {
module: {
loaders: [
{
test: /.js$/,
exclude: /node_modules/,
loader: 'eslint-loader',
enforce: 'pre'
},
{
test: /.(css|scss)$/,
loaders: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?minimize!resolve-url-loader!sass-loader?sourceMap!postcss-loader'
})
},
{
test: /.(jpe?g|png|gif|svg)$/,
loader: 'file-loader',
options: {
regExp: //([a-z0-9]+)/[a-z0-9]+.json$/,
name: '[name]-[hash].[ext]'
}
},
{
test: /.js$/,
exclude: /node_modules/,
loaders: [
'ng-annotate-loader',
'babel-loader'
]
},
{
test: /.html$/,
loaders: [
'html-loader'
]
}
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
template: conf.path.src('index.html')
}),
new webpack.optimize.UglifyJsPlugin({
output: {comments: false},
compress: {unused: true, dead_code: true, warnings: false} // eslint-disable-line camelcase
}),
new ExtractTextPlugin('index-[contenthash].css'),
new webpack.optimize.CommonsChunkPlugin({name: 'vendor'}),
new webpack.LoaderOptionsPlugin({
options: {
postcss: () => [autoprefixer]
}
}),
new webpack.HashedModuleIdsPlugin(),
new CopyWebpackPlugin([{
from: 'src/app/**/*.json',
to: 'translations/[name]-[hash].[ext]'
}]),
new VersionFile({
output: `${conf.paths.dist}/version.txt`,
verbose: true
})
],
output: {
path: path.join(process.cwd(), conf.paths.dist),
filename: '[name]-[hash].js'
},
entry: {
app: [`./${conf.path.src('app/app.module.js')}`],
vendor: Object.keys(pkg.dependencies)
},
node: {
fs: 'empty',
/* eslint-disable camelcase */
child_process: 'empty'
}
};


Or to similfy the question, how can i add a hash to json files? and the following code doesn't seem to do anything.



   {
test: /.json$/,
loader: 'file-loader',
options: {
name: '[name]-[hash].[ext]'
}
}


example of the translations being in both locations



EDIT:



so it seems like my json loader doesnt pick up the translation files as they're dynamicly imported like so how:



  $translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: 'app/{part}/translations/{lang}.json'
});


do you handle cases like this?










share|improve this question
























  • In CopyWebpackPlugin you can specify the path to: path.join(process.cwd(), conf.path.dist, 'translations/[name]-[hash].[ext]') it will provide an absolute path to the plugin instead of the current relative path per entry. This will create a translations folder at the root of your dist directory
    – Asten Mies
    Nov 13 at 18:34












  • Yes I can create the translations folder with the hashes just fine will your method remove the old entries?
    – Joe Warner
    Nov 13 at 19:08










  • @astenmies Thanks for having a look
    – Joe Warner
    Nov 13 at 19:09










  • To remove the old entries you can just delete the dist folder and build again
    – Asten Mies
    Nov 13 at 19:10










  • No so the JSON copied still remains in there original path shown In the screen shot ofc I could do something like exec('-rm /dist/app') or something to that flavour but I was hoping it could be done with the build step if not that's cool
    – Joe Warner
    Nov 13 at 19:13













up vote
1
down vote

favorite
1









up vote
1
down vote

favorite
1






1





"webpack": "^2.7.0"


I'm trying to add a hash to our translation files in order to cache bust when deploying. I've managed to extract the json and add a hash and output it to a folder and is good with the world.



But, my unhashed json is still under there original folders after building. I understand that we don't need to add a loader for json as it already has means of handling importing, so my question would be how do I clean out the json that's already been processed?



my folder structure is as follows



src/
app/
module-name/
/translations
en.json
fn.json
module-name/
/translations
en.json
fn.json
//ect...


I used the CopyWebpackPlugin to get the json and hash is there maybe an option ive missed that cleans out the process'd files? or maybe i'm approaching this the incorrect way.



const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');

const VersionFile = require('webpack-version-file');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const pkg = require('../package.json');
const autoprefixer = require('autoprefixer');

module.exports = {
module: {
loaders: [
{
test: /.js$/,
exclude: /node_modules/,
loader: 'eslint-loader',
enforce: 'pre'
},
{
test: /.(css|scss)$/,
loaders: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?minimize!resolve-url-loader!sass-loader?sourceMap!postcss-loader'
})
},
{
test: /.(jpe?g|png|gif|svg)$/,
loader: 'file-loader',
options: {
regExp: //([a-z0-9]+)/[a-z0-9]+.json$/,
name: '[name]-[hash].[ext]'
}
},
{
test: /.js$/,
exclude: /node_modules/,
loaders: [
'ng-annotate-loader',
'babel-loader'
]
},
{
test: /.html$/,
loaders: [
'html-loader'
]
}
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
template: conf.path.src('index.html')
}),
new webpack.optimize.UglifyJsPlugin({
output: {comments: false},
compress: {unused: true, dead_code: true, warnings: false} // eslint-disable-line camelcase
}),
new ExtractTextPlugin('index-[contenthash].css'),
new webpack.optimize.CommonsChunkPlugin({name: 'vendor'}),
new webpack.LoaderOptionsPlugin({
options: {
postcss: () => [autoprefixer]
}
}),
new webpack.HashedModuleIdsPlugin(),
new CopyWebpackPlugin([{
from: 'src/app/**/*.json',
to: 'translations/[name]-[hash].[ext]'
}]),
new VersionFile({
output: `${conf.paths.dist}/version.txt`,
verbose: true
})
],
output: {
path: path.join(process.cwd(), conf.paths.dist),
filename: '[name]-[hash].js'
},
entry: {
app: [`./${conf.path.src('app/app.module.js')}`],
vendor: Object.keys(pkg.dependencies)
},
node: {
fs: 'empty',
/* eslint-disable camelcase */
child_process: 'empty'
}
};


Or to similfy the question, how can i add a hash to json files? and the following code doesn't seem to do anything.



   {
test: /.json$/,
loader: 'file-loader',
options: {
name: '[name]-[hash].[ext]'
}
}


example of the translations being in both locations



EDIT:



so it seems like my json loader doesnt pick up the translation files as they're dynamicly imported like so how:



  $translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: 'app/{part}/translations/{lang}.json'
});


do you handle cases like this?










share|improve this question















"webpack": "^2.7.0"


I'm trying to add a hash to our translation files in order to cache bust when deploying. I've managed to extract the json and add a hash and output it to a folder and is good with the world.



But, my unhashed json is still under there original folders after building. I understand that we don't need to add a loader for json as it already has means of handling importing, so my question would be how do I clean out the json that's already been processed?



my folder structure is as follows



src/
app/
module-name/
/translations
en.json
fn.json
module-name/
/translations
en.json
fn.json
//ect...


I used the CopyWebpackPlugin to get the json and hash is there maybe an option ive missed that cleans out the process'd files? or maybe i'm approaching this the incorrect way.



const webpack = require('webpack');
const conf = require('./gulp.conf');
const path = require('path');

const VersionFile = require('webpack-version-file');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const pkg = require('../package.json');
const autoprefixer = require('autoprefixer');

module.exports = {
module: {
loaders: [
{
test: /.js$/,
exclude: /node_modules/,
loader: 'eslint-loader',
enforce: 'pre'
},
{
test: /.(css|scss)$/,
loaders: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?minimize!resolve-url-loader!sass-loader?sourceMap!postcss-loader'
})
},
{
test: /.(jpe?g|png|gif|svg)$/,
loader: 'file-loader',
options: {
regExp: //([a-z0-9]+)/[a-z0-9]+.json$/,
name: '[name]-[hash].[ext]'
}
},
{
test: /.js$/,
exclude: /node_modules/,
loaders: [
'ng-annotate-loader',
'babel-loader'
]
},
{
test: /.html$/,
loaders: [
'html-loader'
]
}
]
},
plugins: [
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
template: conf.path.src('index.html')
}),
new webpack.optimize.UglifyJsPlugin({
output: {comments: false},
compress: {unused: true, dead_code: true, warnings: false} // eslint-disable-line camelcase
}),
new ExtractTextPlugin('index-[contenthash].css'),
new webpack.optimize.CommonsChunkPlugin({name: 'vendor'}),
new webpack.LoaderOptionsPlugin({
options: {
postcss: () => [autoprefixer]
}
}),
new webpack.HashedModuleIdsPlugin(),
new CopyWebpackPlugin([{
from: 'src/app/**/*.json',
to: 'translations/[name]-[hash].[ext]'
}]),
new VersionFile({
output: `${conf.paths.dist}/version.txt`,
verbose: true
})
],
output: {
path: path.join(process.cwd(), conf.paths.dist),
filename: '[name]-[hash].js'
},
entry: {
app: [`./${conf.path.src('app/app.module.js')}`],
vendor: Object.keys(pkg.dependencies)
},
node: {
fs: 'empty',
/* eslint-disable camelcase */
child_process: 'empty'
}
};


Or to similfy the question, how can i add a hash to json files? and the following code doesn't seem to do anything.



   {
test: /.json$/,
loader: 'file-loader',
options: {
name: '[name]-[hash].[ext]'
}
}


example of the translations being in both locations



EDIT:



so it seems like my json loader doesnt pick up the translation files as they're dynamicly imported like so how:



  $translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: 'app/{part}/translations/{lang}.json'
});


do you handle cases like this?







javascript json webpack






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 at 15:08

























asked Nov 13 at 16:27









Joe Warner

1,8111422




1,8111422












  • In CopyWebpackPlugin you can specify the path to: path.join(process.cwd(), conf.path.dist, 'translations/[name]-[hash].[ext]') it will provide an absolute path to the plugin instead of the current relative path per entry. This will create a translations folder at the root of your dist directory
    – Asten Mies
    Nov 13 at 18:34












  • Yes I can create the translations folder with the hashes just fine will your method remove the old entries?
    – Joe Warner
    Nov 13 at 19:08










  • @astenmies Thanks for having a look
    – Joe Warner
    Nov 13 at 19:09










  • To remove the old entries you can just delete the dist folder and build again
    – Asten Mies
    Nov 13 at 19:10










  • No so the JSON copied still remains in there original path shown In the screen shot ofc I could do something like exec('-rm /dist/app') or something to that flavour but I was hoping it could be done with the build step if not that's cool
    – Joe Warner
    Nov 13 at 19:13


















  • In CopyWebpackPlugin you can specify the path to: path.join(process.cwd(), conf.path.dist, 'translations/[name]-[hash].[ext]') it will provide an absolute path to the plugin instead of the current relative path per entry. This will create a translations folder at the root of your dist directory
    – Asten Mies
    Nov 13 at 18:34












  • Yes I can create the translations folder with the hashes just fine will your method remove the old entries?
    – Joe Warner
    Nov 13 at 19:08










  • @astenmies Thanks for having a look
    – Joe Warner
    Nov 13 at 19:09










  • To remove the old entries you can just delete the dist folder and build again
    – Asten Mies
    Nov 13 at 19:10










  • No so the JSON copied still remains in there original path shown In the screen shot ofc I could do something like exec('-rm /dist/app') or something to that flavour but I was hoping it could be done with the build step if not that's cool
    – Joe Warner
    Nov 13 at 19:13
















In CopyWebpackPlugin you can specify the path to: path.join(process.cwd(), conf.path.dist, 'translations/[name]-[hash].[ext]') it will provide an absolute path to the plugin instead of the current relative path per entry. This will create a translations folder at the root of your dist directory
– Asten Mies
Nov 13 at 18:34






In CopyWebpackPlugin you can specify the path to: path.join(process.cwd(), conf.path.dist, 'translations/[name]-[hash].[ext]') it will provide an absolute path to the plugin instead of the current relative path per entry. This will create a translations folder at the root of your dist directory
– Asten Mies
Nov 13 at 18:34














Yes I can create the translations folder with the hashes just fine will your method remove the old entries?
– Joe Warner
Nov 13 at 19:08




Yes I can create the translations folder with the hashes just fine will your method remove the old entries?
– Joe Warner
Nov 13 at 19:08












@astenmies Thanks for having a look
– Joe Warner
Nov 13 at 19:09




@astenmies Thanks for having a look
– Joe Warner
Nov 13 at 19:09












To remove the old entries you can just delete the dist folder and build again
– Asten Mies
Nov 13 at 19:10




To remove the old entries you can just delete the dist folder and build again
– Asten Mies
Nov 13 at 19:10












No so the JSON copied still remains in there original path shown In the screen shot ofc I could do something like exec('-rm /dist/app') or something to that flavour but I was hoping it could be done with the build step if not that's cool
– Joe Warner
Nov 13 at 19:13




No so the JSON copied still remains in there original path shown In the screen shot ofc I could do something like exec('-rm /dist/app') or something to that flavour but I was hoping it could be done with the build step if not that's cool
– Joe Warner
Nov 13 at 19:13












1 Answer
1






active

oldest

votes

















up vote
0
down vote



accepted










The main goal you're trying to do here is telling the browser its a new file when releasing a new version and we can do this fairly easily without having to force webpack to know what files are being used.



in your webpack config add this



const pkg = require('../package.json');
//...
new webpack.DefinePlugin({
__VERSION__: JSON.stringify(pkg.version)
})


and where you add your translation files this allows for the browser to know where has been a new release and should update translation files.



$translateProvider.useLoader('$translatePartialLoader', {
urlTemplate: `app/{part}/translations/{lang}.json?v=${__VERSION__}`
});





share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285407%2fwebpack-how-to-cache-bust-angular-translate-with-translatepartialloader%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote



    accepted










    The main goal you're trying to do here is telling the browser its a new file when releasing a new version and we can do this fairly easily without having to force webpack to know what files are being used.



    in your webpack config add this



    const pkg = require('../package.json');
    //...
    new webpack.DefinePlugin({
    __VERSION__: JSON.stringify(pkg.version)
    })


    and where you add your translation files this allows for the browser to know where has been a new release and should update translation files.



    $translateProvider.useLoader('$translatePartialLoader', {
    urlTemplate: `app/{part}/translations/{lang}.json?v=${__VERSION__}`
    });





    share|improve this answer

























      up vote
      0
      down vote



      accepted










      The main goal you're trying to do here is telling the browser its a new file when releasing a new version and we can do this fairly easily without having to force webpack to know what files are being used.



      in your webpack config add this



      const pkg = require('../package.json');
      //...
      new webpack.DefinePlugin({
      __VERSION__: JSON.stringify(pkg.version)
      })


      and where you add your translation files this allows for the browser to know where has been a new release and should update translation files.



      $translateProvider.useLoader('$translatePartialLoader', {
      urlTemplate: `app/{part}/translations/{lang}.json?v=${__VERSION__}`
      });





      share|improve this answer























        up vote
        0
        down vote



        accepted







        up vote
        0
        down vote



        accepted






        The main goal you're trying to do here is telling the browser its a new file when releasing a new version and we can do this fairly easily without having to force webpack to know what files are being used.



        in your webpack config add this



        const pkg = require('../package.json');
        //...
        new webpack.DefinePlugin({
        __VERSION__: JSON.stringify(pkg.version)
        })


        and where you add your translation files this allows for the browser to know where has been a new release and should update translation files.



        $translateProvider.useLoader('$translatePartialLoader', {
        urlTemplate: `app/{part}/translations/{lang}.json?v=${__VERSION__}`
        });





        share|improve this answer












        The main goal you're trying to do here is telling the browser its a new file when releasing a new version and we can do this fairly easily without having to force webpack to know what files are being used.



        in your webpack config add this



        const pkg = require('../package.json');
        //...
        new webpack.DefinePlugin({
        __VERSION__: JSON.stringify(pkg.version)
        })


        and where you add your translation files this allows for the browser to know where has been a new release and should update translation files.



        $translateProvider.useLoader('$translatePartialLoader', {
        urlTemplate: `app/{part}/translations/{lang}.json?v=${__VERSION__}`
        });






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 19 at 17:57









        Joe Warner

        1,8111422




        1,8111422






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285407%2fwebpack-how-to-cache-bust-angular-translate-with-translatepartialloader%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            404 Error Contact Form 7 ajax form submitting

            How to know if a Active Directory user can login interactively

            TypeError: fit_transform() missing 1 required positional argument: 'X'