Giter Site home page Giter Site logo

Use with webpack.DefinePlugin about craco HOT 9 CLOSED

dilanx avatar dilanx commented on July 19, 2024 4
Use with webpack.DefinePlugin

from craco.

Comments (9)

hacking-robot avatar hacking-robot commented on July 19, 2024 9

If you want it to work you have to do this:

  • First try console.log in your code because in chrome dev tools it will return undefined.
  • Second, put everything under process.env otherwise you will get a compilation error.
  • Or use dotenv-webpack instead
const { DefinePlugin } = require("webpack")
const Dotenv = require('dotenv-webpack')
const CracoAntDesignPlugin = require('craco-antd')

module.exports = {
  plugins: [
    {
      plugin: CracoAntDesignPlugin,
      options: {
        customizeTheme: {
        }
      }
    }
  ],
  webpack: {
    plugins: [
      new Dotenv(),
      new DefinePlugin({
        "process.env.VERSION": JSON.stringify(
          require("./package.json").version
        )
      })
    ]
  }
}

from craco.

saostad avatar saostad commented on July 19, 2024 6

@ChemicalRocketeer @saostad do you still have the issue?

Hi, I fix my problem with another package. rescripts

from craco.

saostad avatar saostad commented on July 19, 2024 6

Here is the solution in case anybody wants to use it:

const { DefinePlugin } = require("webpack");

module.exports = {
  webpack: {
    plugins: [
      new DefinePlugin({
        "process.env.VERSION": JSON.stringify(
          require("./package.json").version
        ),
        "process.env.YEAR": new Date().getFullYear()
      })
    ]
  }
}

and here is another example I added ant design to config, it's good if you need mix and match webpack plugins and babel plugins!

const { DefinePlugin } = require("webpack");

module.exports = {
  webpack: {
    plugins: [
      new DefinePlugin({
        "process.env.VERSION": JSON.stringify(
          require("./package.json").version
        ),
        "process.env.YEAR": new Date().getFullYear()
      })
    ]
  },
  plugins: [
    {
      plugin: require("craco-antd"),
      options: {
        customizeTheme: {
          "@primary-color": "#1DA57A"
        },
        lessLoaderOptions: {
          noIeCompat: true
        }
      }
    }
  ]
};
 

from craco.

d0ruk avatar d0ruk commented on July 19, 2024 2

You might be confused how the DefinePlugin works.

It sets global variables during your build process.

Thus, to have window.config in your app;

craco.config.js

new webpack.DefinePlugin({
  "process.env": { config: JSON.stringify(appConfig) }
})

index.js

window.config = process.env.config;

from craco.

saostad avatar saostad commented on July 19, 2024 1

same problem here!
what I want to do is having 1 variable with different value in prod and dev environment.
is there any way to define environment variable in webpack config?
something like :

const rewireDefinePlugin = require('react-app-rewire-define-plugin')

// Use `webpack.DefinePlugin` to add the version number from package.json
config = rewireDefinePlugin(config, env, {
  'process.env.VERSION': JSON.stringify(require('./package.json').version)
})

from craco.

Atlaswimming avatar Atlaswimming commented on July 19, 2024

It works in my project.
craco.config.js :

  const appConfig = { a: 1 };
  const config = {
    webpack: {
      plugins: [
        new webpack.DefinePlugin({
          PROCESS_ENV_BETA: JSON.stringify(process.env.ENV === 'beta'),
          PROCESS_ENV_DEV: JSON.stringify(process.env.ENV === 'dev'),
          config: JSON.stringify(appConfig),
        }),
      ],
      configure: (webpackConfig, { env, paths }) => {
        ...
        return webpackConfig;
      },
   };
...

index.js:

  console.log(config); // eslint-disable-line

then run build results in:

  console.log({a:1})

I was trying to find a way to use DefinePlugin today, and just edit my craco file with your code in this issue, then it just works...
But I cannot find any different between our code.

from craco.

patricklafrance avatar patricklafrance commented on July 19, 2024

@ChemicalRocketeer @saostad do you still have the issue?

from craco.

soriyath avatar soriyath commented on July 19, 2024

Does not work for me.

from craco.

gauravmarsoniya avatar gauravmarsoniya commented on July 19, 2024

Does not work for me.

from craco.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.