mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-11 08:33:53 +00:00
fix(builder): add lodash inside templates (#4368)
This commit is contained in:
parent
0db1f26e64
commit
27e79be285
@ -429,6 +429,33 @@ export default class Builder {
|
|||||||
resolve: r
|
resolve: r
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Prepare template options
|
||||||
|
let lodash = null
|
||||||
|
const templateOptions = {
|
||||||
|
imports: {
|
||||||
|
serialize,
|
||||||
|
devalue,
|
||||||
|
hash,
|
||||||
|
r,
|
||||||
|
wp,
|
||||||
|
wChunk,
|
||||||
|
resolvePath: this.nuxt.resolver.resolvePath,
|
||||||
|
resolveAlias: this.nuxt.resolver.resolveAlias,
|
||||||
|
relativeToBuild: this.relativeToBuild,
|
||||||
|
// Legacy support: https://github.com/nuxt/nuxt.js/issues/4350
|
||||||
|
_: new Proxy({}, {
|
||||||
|
get(target, prop) {
|
||||||
|
if (!lodash) {
|
||||||
|
consola.warn('Avoid using _ inside templates')
|
||||||
|
lodash = require('lodash')
|
||||||
|
}
|
||||||
|
return lodash[prop]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
interpolate: /<%=([\s\S]+?)%>/g
|
||||||
|
}
|
||||||
|
|
||||||
// Interpret and move template files to .nuxt/
|
// Interpret and move template files to .nuxt/
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
templatesFiles.map(async ({ src, dst, options, custom }) => {
|
templatesFiles.map(async ({ src, dst, options, custom }) => {
|
||||||
@ -438,20 +465,7 @@ export default class Builder {
|
|||||||
const fileContent = await fsExtra.readFile(src, 'utf8')
|
const fileContent = await fsExtra.readFile(src, 'utf8')
|
||||||
let content
|
let content
|
||||||
try {
|
try {
|
||||||
const templateFunction = template(fileContent, {
|
const templateFunction = template(fileContent, templateOptions)
|
||||||
imports: {
|
|
||||||
serialize,
|
|
||||||
devalue,
|
|
||||||
hash,
|
|
||||||
r,
|
|
||||||
wp,
|
|
||||||
wChunk,
|
|
||||||
resolvePath: this.nuxt.resolver.resolvePath,
|
|
||||||
resolveAlias: this.nuxt.resolver.resolveAlias,
|
|
||||||
relativeToBuild: this.relativeToBuild
|
|
||||||
},
|
|
||||||
interpolate: /<%=([\s\S]+?)%>/g
|
|
||||||
})
|
|
||||||
content = stripWhitespace(
|
content = stripWhitespace(
|
||||||
templateFunction(
|
templateFunction(
|
||||||
Object.assign({}, templateVars, {
|
Object.assign({}, templateVars, {
|
||||||
|
@ -9,3 +9,6 @@ function $reverseStr(str) {
|
|||||||
Vue.prototype.$reverseStr = $reverseStr
|
Vue.prototype.$reverseStr = $reverseStr
|
||||||
|
|
||||||
export default undefined
|
export default undefined
|
||||||
|
|
||||||
|
// Legacy support: https://github.com/nuxt/nuxt.js/issues/4350
|
||||||
|
// <%= _.toUpper('foo') %>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { normalize } from 'path'
|
import { normalize } from 'path'
|
||||||
import consola from 'consola'
|
import consola from 'consola'
|
||||||
import { loadFixture, getPort, Nuxt, rp } from '../utils'
|
import { loadFixture, getPort, Nuxt, Builder, rp } from '../utils'
|
||||||
|
|
||||||
let port
|
let port
|
||||||
const url = route => 'http://localhost:' + port + route
|
const url = route => 'http://localhost:' + port + route
|
||||||
@ -69,6 +69,12 @@ describe('module', () => {
|
|||||||
expect(consola.warn).toHaveBeenCalledWith('addVendor has been deprecated due to webpack4 optimization')
|
expect(consola.warn).toHaveBeenCalledWith('addVendor has been deprecated due to webpack4 optimization')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('Lodash - deprecated', async () => {
|
||||||
|
const builder = new Builder(nuxt)
|
||||||
|
await builder.generateRoutesAndFiles()
|
||||||
|
expect(consola.warn).toHaveBeenCalledWith('Avoid using _ inside templates')
|
||||||
|
})
|
||||||
|
|
||||||
// Close server and ask nuxt to stop listening to file changes
|
// Close server and ask nuxt to stop listening to file changes
|
||||||
afterAll(async () => {
|
afterAll(async () => {
|
||||||
await nuxt.close()
|
await nuxt.close()
|
||||||
|
Loading…
Reference in New Issue
Block a user